2011-12-22 57 views

回答

3

療法的原因是,只有那些2的冪數可以精確用一個簡單的二進制表示表示。

一個二進制數的個別數字是2個不同的功率和任何數目因此是不同功率的2

0.1總和不對應於2的冪,並且不能從不同總結2的冪。因此它只能用一定的誤差表示。你可以找到一個更詳細的解釋和例子here

如果你需要精確的數字,你基本上結合使用整數。我不確定其他語言,但是在java中有幾個類設計用於精確地解決這個問題,以適應精確性至關重要的應用,如財務計算。最突出的是BigIntegerBigDecimal

1

這是由於IEEE 754,這是計算機存儲浮點數的方式。

利用該表示,0.1不能被精確地甚至由一個96位浮點數來表示。對於這個問題,0.3也不能,但如果後者是0.1,那麼不能準確地表示0.1,這意味着將其乘以3不會完全產生0.3。

相關問題