日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js小数运算出现多为小数问题_js 数字加减乘除精度问题,解决小数点后多位小数...

發布時間:2025/3/15 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js小数运算出现多为小数问题_js 数字加减乘除精度问题,解决小数点后多位小数... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在javascript中,當你使用小數進行加減乘除運算時,你會發現,所得到的結果有時后面帶有長長的一段小數,使運算變得復雜,并且影響計算結果。上網查詢了一下原因,大致如下:在javascript中,帶小數的數據運算時總會出現好多位小數.這是因為在javascript中浮點數的計算是以2進制計算的。于是在網上找了一下解決方法,在此做一下總結,以便以后使用,同時,希望對有需要的朋友有所幫助。

解決方法思路:將小數化成整數后再作運算。具體代碼如下:

/**

* 加法運算,避免數據相加小數點后產生多位數和計算精度損失。

*

* @param num1加數1 | num2加數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;

};

/**

* 加法運算,避免數據相減小數點后產生多位數和計算精度損失。

*

* @param num1被減數 | num2減數

*/

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);

};

/**

* 乘法運算,避免數據相乘小數點后產生多位數和計算精度損失。

*

* @param num1被乘數 | num2乘數

*/

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);

};

/**

* 除法運算,避免數據相除小數點后產生多位數和計算精度損失。

*

* @param num1被除數 | num2除數

*/

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);

}

};

總結

以上是生活随笔為你收集整理的js小数运算出现多为小数问题_js 数字加减乘除精度问题,解决小数点后多位小数...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。