我都發生在一個Grails項目這個奇怪的劃分錯誤(但我認爲Grails的關係不大吧,是一個Groovy或Java的問題,我認爲):奇怪的浮動劃分結果
如果在常規控制檯我跑這個
float money = -1.30
float r = 0.01
println ((money/r).class.name)
println ((money/r).floatValue())
println ((money/r).toString())
我得到這個輸出
java.lang.Double
-130.0
-129.99999813735482
在常規浮動師給我一個雙人間,這是正確的,但 爲什麼雙的toString()給我一個很奇怪的值「-129.99999813735482」和 不正確的「-130.0」?
[這](HTTP ://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)可能會讓你感興趣 – Pshemo
漂浮和雙打在某種程度上是不準確的。所以我的猜測是,'-130.0'是某種類似的近似值,'-129.99999813735482'是實際值。 –
@Andrew Thompson:一般而言,如果可能的話,它應該被聲明爲十進制類型,如Java中的BigDecimal。 –