分析
JavaScript 只有一種數字類型 Number ,而且在Javascript中所有的數字都是以IEEE-754標準格式表示的。 浮點數的精確度問題不是JavaScript特有的,因為有些小數以二進位表示位數是無窮的:
十進制 二進制
0.1 0.0001 1001 1001 1001 ...
0.2 0.0011 0011 0011 0011 ...
0.3 0.0100 1100 1100 1100 ...
0.4 0.0110 0110 0110 0110 ...
0.5 0.1
0.6
1.09999999999999999
在JavaScript中問題還要複雜些,這裡只給一些在Chrome中測試資料:
輸入 輸出
1.0-0.9 == 0.1 False
1.0-0.6 == 0.4 True
1.0- 0.5 == 0.5 True
1.0-0.4 == 0.6 True
1.0-0.3 == 0.7 True
1.0.3 == 0.7 True
1.0-0.20. True
解決
}
(1.0-0.7).isEqual(0.3); // return true