2012-12-28 24 views
0

可能重複:
Floating point arithmetic not producing exact results in Java爲什麼65.12 - 2在java中不等於63.12?

我最近工作的一個項目,當我遇到一個奇怪的錯誤來了。

當從65.12中減去2時,該值更大(不等於)63.12。

這裏的簡化代碼: System.out.println(65.12-2);

並在控制檯輸出: 63.120000000000005

我不知道爲什麼是這樣的話,如果有人知道一個簡單的修復/解決辦法,這將是大!

謝謝。

+1

請參閱[每位計算機科學家應瞭解的浮點算術知識](http://download.oracle.com/docs/cd/E19957-01/806-3568 /ncg_goldberg.html)。 –

+0

我會給它一個閱讀,謝謝! – aly

+0

不客氣。 :)快樂學習。 –

回答

-1

它與計算機處理浮點值的方式有關。完整理解此主題的推薦文本是:What Every Computer Scientist Should Know About Floating-Point Arithmetic

+0

正如我對問題的評論所指出的,這個答案無法解釋意想不到的結果。減法是確切的;在源文本中從數字「65.12」所代表的double中減去'2'的結果恰好小於'65.12'。雖然理論上可以從鏈接文章中部分推導出解釋,但這並不是因爲算術中的四捨五入,正如我們所看到的那樣常見。相反,它涉及顯示浮點值的Java規範,這不是鏈接文章的一部分。 –

相關問題