嗨即時試圖扣除2個十進制數字,它不斷返回一些奇怪的數字。扣除2個十進制數字javascript
var x = 0.00085022
var y = 0.00085050
var answer = x - y
alert(answer)
這是它的返回-2.8000000000007186e-7
嗨即時試圖扣除2個十進制數字,它不斷返回一些奇怪的數字。扣除2個十進制數字javascript
var x = 0.00085022
var y = 0.00085050
var answer = x - y
alert(answer)
這是它的返回-2.8000000000007186e-7
你有更大數量減去和計算穿越到一個更低的數目。是-2.0更低,小數位精度達到指數級更高。
如果我們圓起來,我們得到:
var x = 85022
var y = 85050
var answer = x - y
alert(answer); // = -28
小數的最大數量爲17,但浮點運算並不總是100%準確 http://www.w3schools.com/js/js_numbers.asp
試試這個:
var x = 0.00085022 * 100000000;
var y = 0.00085050 * 100000000;
var answer = (x - y)/100000000;
alert(answer);
請記住,除了'100000000'之外,您可以乘以'0.000000001',這是一個比較便宜的計算。但是,一如既往,爲了代碼清晰起見,在性能成爲問題之前,這種改進不應成爲問題。 –
可能的重複[格式編號爲始終sho w 2位小數](http://stackoverflow.com/questions/6134039/format-number-to-always-show-2-decimal-places) –
請看看這裏[如何處理浮點數精度在JavaScript?](http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript) – choz
http://www.2ality.com/2012/ 03/displays-numbers.html –