所以當我用Doubles添加或減去Java時,它給了我奇怪的結果。這裏有一些:增加和減少雙打給出奇怪的結果
如果我加0.0 + 5.1
,它給我5.1
。這是正確的。
如果我加5.1 + 0.1
,它給我5.199999999999
(重複9
的數量可能會關閉)。這是錯誤的。
如果我減去4.8 - 0.4
,它給我4.39999999999995
(同樣,重複9
可能會關閉)。這是錯誤的。
起初我以爲這只是添加十進制值的雙打問題,但我錯了。以下工作得很好:
5.1 + 0.2 = 5.3
5.1 - 0.3 = 4.8
現在,添加的第一個號碼是保存爲一個變量雙,雖然第二個變量抓住從JTextField
文本。例如:
//doubleNum = 5.1 RIGHT HERE
//The textfield has only a "0.1" in it.
doubleNum += Double.parseDouble(textField.getText());
//doubleNum = 5.199999999999999
順便說一句,更喜歡使用BigDecimal(http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html) – user2147970 2013-03-25 21:59:30
其實,5.19999999 ...(無限多重複9 )在數學上與5.2完全相同,如果你不相信,試着找出兩者之間的區別。它是0,因此它們是相同的。 – Ingo 2013-03-25 22:06:27
@在技術上,是的,但我想有一個精確的答案:) – 2013-03-25 22:12:09