2012-05-25 81 views

回答

4

在IEEE浮點型數字中​​,數字越大,數字之間的差距越大。當你看看number is stored如何時,這是有道理的。

請考慮有相同數量的可能值與負指數非負。這意味着0和1之間的可能數量與1和無窮大之間的可能數量相同。很顯然,1和無限之間的數字還有更多的距離。這個間隔實際上是分佈的,所以距離0越遠,可能存儲的數字之間的差距就越大(沒有真正的最大數量,它只是最終達到了無限數量與無窮大相區別的程度)。

這實際上效果很好,因爲在大多數情況下,處理較大數字時需要的精度較低。 1010040182294052410100401822940526之間的差異遠小於13之間的差異相對於數量的大小。能夠表示數字2比數字10100401822940525重要得多,並且您被限制爲64位。

1

這是一個浮點舍入的實例。 Javascript中的數字作爲雙精度浮點數存儲(AFAIK)。浮點數的精度有限,所以當數字變得太大時,它們不能再存儲爲一個確切的整數,並且它們需要四捨五入。

這是另一個例子,錯誤更大。 http://jsfiddle.net/NhZ75/

如果您想知道數學爲什麼會起作用,那是因爲大多數計算機以高精度存儲浮點數學運算,所以舍入錯誤通常只發生在將數字存儲在變量中時。