2016-08-03 54 views
3

嗨即時試圖扣除2個十進制數字,它不斷返回一些奇怪的數字。扣除2個十進制數字javascript

var x = 0.00085022 
var y = 0.00085050 
var answer = x - y 
alert(answer) 

這是它的返回-2.8000000000007186e-7

+0

可能的重複[格式編號爲始終sho w 2位小數](http://stackoverflow.com/questions/6134039/format-number-to-always-show-2-decimal-places) –

+0

請看看這裏[如何處理浮點數精度在JavaScript?](http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript) – choz

+0

http://www.2ality.com/2012/ 03/displays-numbers.html –

回答

1

你有更大數量減去和計算穿越到一個更低的數目。是-2.0更低,小數位精度達到指數級更高。

如果我們圓起來,我們得到:

var x = 85022 
var y = 85050 
var answer = x - y 
alert(answer); // = -28 
2

小數的最大數量爲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); 
+4

請記住,除了'100000000'之外,您可以乘以'0.000000001',這是一個比較便宜的計算。但是,一如既往,爲了代碼清晰起見,在性能成爲問題之前,這種改進不應成爲問題。 –

相關問題