數字乘以 10 的 n 次冪,換算成計算機能夠精確識別的整數,然後再除以 10 的 n 次冪來處理
JS精度
console.log(0.1+0.2)
// 0.30000000000000004
計算
var x = 4.23323;//測試的數字
var y = String(x).indexOf(".") + 1;//獲取小數點的位置
var count = String(x).length - y;//獲取小數點後的個數
題目
求 a 和 b 相乘的值,a 和 b 可能是小數,需要注意結果的精度問題
輸入
3, 0.0001
輸出
0.0003
思路
- 先將其轉換成字串
- 根據小數點的位置確定小數位數
- 依據位數取高精度值
- 用toFixed()函式確定結果小數位
方案
function multiply(a, b) {
var stra=a.toString();
var strb=b.toString();
var len=Math.max(stra.length-stra.indexOf('.')-1,strb.length-strb.indexOf('.')-1);
// 求兩個數中精度大的一個
return parseFloat(a*b).toFixed(len);
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結