[問題] Javascript 的問題

剛被朋友問到一個問題
一時也不曉得怎麼回答...

一段 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

這是因為精度不足嗎?
2008-10-17 17:47 發佈
文章關鍵字 問題 JavaScript
這是 JavaScript 的問題,為了可跨平台;所以不像 C 語言之類經編譯成機械語言由 CPU/FPU 運算。而是用平台上的 JavaScript 解譯器解譯;
這與過去 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
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?