1. 程式人生 > >jquery中浮點數運算結果保留兩位小數的方法

jquery中浮點數運算結果保留兩位小數的方法

今天在偶然用到了一個簡單的運算,38.6-38.2,結果竟然是0.3999999999999986,一般來說肯定是0.4。
通過查詢,瞭解到,計算機內部的二進位制是無法精確表達0.1,0.2之類的數字的。
原理:
像簡單的0.1
用十進位制表示:1×10^-1 ,也就是0.1
而用二進位制表示:0×2^-1+0×2^-2+0×2^-3+1×2^−4+1×2^−5……
也就是:0.0001 1001 1001 1001…基本就是個無限迴圈小數

但是當結果為可用二進位制精確表示的小數,例如0.5
由於0.5可用二進位制0.1表示,所以不會產生丟失精度的問題,看起來也是正常的

解決方法:
在程式碼中加入如下方法

//保留兩位小數
function intToFloat(val){
	return new Number(val).toFixed(2);
}

在每個返回值為浮點數的地方呼叫該函式即可,toFixed作用是四捨五入,引數保留n位小數

intToFloat(float1-float2);