2012-04-07 149 views
3

斯卡拉解釋裏面一樣,當我檢查值:scala中如何比較兩種不同類型的對象?

scala> 1==1.0000000000000001 

res1: Boolean = true 

scala> 1==1.000000000000001 

res2: Boolean = false 

在這裏,我沒有得到與相關明確的說法「如何Scala編譯器解釋這些爲整數或浮點數點或雙打(和比較)」。

回答

9

這不是真的斯卡拉相關,它更多的是一個浮點算術問題。首先,在比較IntDouble時,它會投IntDouble(始終安全)。第二種情況很明顯 - 價值觀不同。

與第一種情況下會發生什麼事是,Double類型不是能夠存儲許多顯著位數(17你的情況,64位浮點可存儲多達至16十進制數),所以便將價值1 。和1 == 1

相關問題