今天在頁面上用到了js進行小數相加119.01+0.01,結果大家都知道應該是:119.02的,然而結果是119..0200000…. ,莫名其妙的,還以為是我寫的程序有問題,后來查了下才知道這是javascript浮點運算的一個bug.
解決方案
1.這是因為Javascript的數字類型是以64位的IEEE 754格式存儲的。
2.解決方法把相加的結果做下處理
function toDecimal(x) {
var val = Number(x)
if(!isNaN(parseFloat(val))) {
val = val.toFixed(2);
}
return val;
}