剛被朋友問到一個問題
一時也不曉得怎麼回答...
一段 js 程式
var A = 3.8;
var B = 2.0;
[removed](A-B);
</script>
但是結果是錯的
Google Chrome 顯示 1.7999999999999998
Firefox 顯示 1.7999999999999998
IE7 顯示 1.7999999999999998
如果把 A 改成 3.7,則
Google Chrome 顯示 1.7000000000000002
Firefox 顯示 1.7000000000000002
IE7 顯示 1.7000000000000001
這是因為精度不足嗎?
這與過去 286 / 386 本身沒有浮點運算處理器 FPU,這一個運算器要另外買另外插上;所以主機板上有兩個像 CPU 插座的位置。
沒錢的人只好用「模擬浮點運算處理器」的軟體。與真的使用 FPU 運算速度及結果都不一樣。
所以 JavaScript 也提供 toFixed / parseFloat 來幫助解決這一個問題
方法一
A = 3.8;
B = 2.0;
C = A-B;
[removed](C.toFixed(2));
方法一遇到一些數字還是會有問題,所以改良方法如下
var D = parseFloat(C.toFixed(3));
var E = D.toFixed(2);
[removed](E);
內文搜尋

X