由於ECMAScript使用基於IEEE754數值的浮點計算方法(本人也不明白這是什麼鬼,大概知道一下就好了),有時在做加減計算時會出現如下問題。
實例:
輸入一下代碼:
<script>
var a = 1.1;
var b = 1.4;
alert(a+b);
</script>
瀏覽器會彈出以下結果(有時):
但是比如輸入一下代碼時:
<script>
var a = 1.2;
var b = 1.4;
alert(a+b);
</script>
瀏覽器會彈出以下結果(有時):
因此不建議判斷浮點數值加減的值,比如:
var a = 0.1,
b = 0.2;
if(a+b == 0.3){
alert("You got 0.3.");
}
比如:
var a = 20.89,
b = 18.95;
alert(a-b);
計算結果是:1.9400000000000013
解決方法一:
alert((a*100-b*100)/100);
解決方法二:
alert(parseFloat(a-b).toFixed(2));
parseFloat(a-b):意爲a-b的值取小數
toFixed(2):意爲保留兩位小數