国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

js加減乘除丟失精度問(wèn)題解決方法

2024-05-06 16:06:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在javascript中,帶小數(shù)的數(shù)據(jù)運(yùn)算時(shí)總會(huì)出現(xiàn)好多位小數(shù).這是因?yàn)樵趈avascript中浮點(diǎn)數(shù)的計(jì)算是以2進(jìn)制計(jì)算的

在javascript中,當(dāng)你使用小數(shù)進(jìn)行加減乘除運(yùn)算時(shí),你會(huì)發(fā)現(xiàn),所得到的結(jié)果有時(shí)后面帶有長(zhǎng)長(zhǎng)的一段小數(shù),使運(yùn)算變得復(fù)雜,并且影響計(jì)算結(jié)果。上網(wǎng)查詢了一下原因,大致如下:在javascript中,帶小數(shù)的數(shù)據(jù)運(yùn)算時(shí)總會(huì)出現(xiàn)好多位小數(shù).這是因?yàn)樵趈avascript中浮點(diǎn)數(shù)的計(jì)算是以2進(jìn)制計(jì)算的。

復(fù)制代碼 代碼如下:


/**
* 加法運(yùn)算,避免數(shù)據(jù)相加小數(shù)點(diǎn)后產(chǎn)生多位數(shù)和計(jì)算精度損失。
*
* @param num1加數(shù)1 | num2加數(shù)2
*/
function numAdd(num1, num2) {
var baseNum, baseNum1, baseNum2;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
return (num1 * baseNum + num2 * baseNum) / baseNum;
};
/**
* 加法運(yùn)算,避免數(shù)據(jù)相減小數(shù)點(diǎn)后產(chǎn)生多位數(shù)和計(jì)算精度損失。
*
* @param num1被減數(shù) | num2減數(shù)
*/
function numSub(num1, num2) {
var baseNum, baseNum1, baseNum2;
var precision;// 精度
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
};
/**
* 乘法運(yùn)算,避免數(shù)據(jù)相乘小數(shù)點(diǎn)后產(chǎn)生多位數(shù)和計(jì)算精度損失。
*
* @param num1被乘數(shù) | num2乘數(shù)
*/
function numMulti(num1, num2) {
var baseNum = 0;
try {
baseNum += num1.toString().split(".")[1].length;
} catch (e) {
}
try {
baseNum += num2.toString().split(".")[1].length;
} catch (e) {
}
return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum);
};
/**
* 除法運(yùn)算,避免數(shù)據(jù)相除小數(shù)點(diǎn)后產(chǎn)生多位數(shù)和計(jì)算精度損失。
*
* @param num1被除數(shù) | num2除數(shù)
*/
function numDiv(num1, num2) {
var baseNum1 = 0, baseNum2 = 0;
var baseNum3, baseNum4;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
with (Math) {
baseNum3 = Number(num1.toString().replace(".", ""));
baseNum4 = Number(num2.toString().replace(".", ""));
return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);
}
};

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 灵璧县| 青川县| 江口县| 勐海县| 湄潭县| 浠水县| 西充县| 叶城县| 聂荣县| 伊春市| 宾阳县| 上思县| 安泽县| 天全县| 普洱| 双柏县| 运城市| 洛阳市| 石阡县| 海南省| 鲁甸县| 天柱县| 广宁县| 高邮市| 阿克陶县| 麻栗坡县| 灵宝市| 云霄县| SHOW| 安新县| 行唐县| 那坡县| 句容市| 水富县| 长乐市| 即墨市| 大田县| 新丰县| 资溪县| 六盘水市| 敦煌市|