浮點計算
阿新 • • 發佈:2018-12-06
js浮點計算
方法一: 指定要保留的小數位數
(0.1+0.2).toFixed(1) = 0.3;
這個方法toFixed是進行四捨五入的也不是很精準,對於計算金額這種嚴謹的問題,不推薦使用,而且不通瀏覽器對toFixed的計算結果也存在差異。
方法二: 把需要計算的數字升級(乘以10的n次冪)成計算機能夠精確識別的整數,等計算完畢再降級(除以10的n次冪),這是大部分程式語言處理精度差異的通用方法。
eg:(0.1 * 10 + 0.2 * 10) / 10 == 0.3
// toFixed 修復
function toFixed(num, s) {
var times = Math.pow(10, s)
var des = num * times + 0.5
des = parseInt(des,> 10) / times
return des + ''
}
//php
bcadd — 將兩個高精度數字相加
bccomp — 比較兩個高精度數字,返回-1, 0, 1
bcdiv — 將兩個高精度數字相除
bcmod — 求高精度數字餘數
bcmul — 將兩個高精度數字相乘
bcpow — 求高精度數字乘方
bcpowmod — 求高精度數字乘方求模,數論裡非常常用
bcscale — 配置預設小數點位數,相當於就是Linux bc中的”scale= ”
bcsqrt — 求高精度數字平方根
bcsub — 將兩個高精度數字相減