2012-06-20 121 views
5

我正在做一個Java腳本的計算,但由於十進制數的精度,我面臨一個問題。 我不能發佈精確計算,但是這是我在做什麼,這導致了意想不到的結果Javascript意外的結果

當我寫: alert(100.01-36.01); //結果是64

但是,當我寫: alert(100.01-37.01); //導致是63.00000000000001

它繼續像38.01一樣....等等。 任何人都可以幫助我,爲什麼這是顯示這樣一個意想不到的行爲。 我被困在計算中。

在此先感謝。

+2

機器沒有無限精度,因此在比較浮點值時必須小心,64是機器的特殊數字,它的冪爲2,因此它可以很好地表示它。 –

+1

這可能會幫助你http://stackoverflow.com/questions/588004/is-javascripts-math-broken –

+2

這已被問及至少一百萬次,請在發佈問題前使用搜索。 – Niko

回答

1

試試這個:

 
<script type="text/javascript"> 
var n1 = parseFloat(100.01); 
var n2 = parseFloat(37.01); 
var res = (n1-n2) 
alert(res.toFixed(2)); 
</script> 
0

,如果你不爲數字宣佈的數字,JS會自動使用它作爲字符串,如果字符串不僅使用數字。

parseFloat(123.45)將它設置爲十進制數。