3
斯卡拉解釋裏面一樣,當我檢查值:scala中如何比較兩種不同類型的對象?
scala> 1==1.0000000000000001
res1: Boolean = true
scala> 1==1.000000000000001
res2: Boolean = false
在這裏,我沒有得到與相關明確的說法「如何Scala編譯器解釋這些爲整數或浮點數點或雙打(和比較)」。
斯卡拉解釋裏面一樣,當我檢查值:scala中如何比較兩種不同類型的對象?
scala> 1==1.0000000000000001
res1: Boolean = true
scala> 1==1.000000000000001
res2: Boolean = false
在這裏,我沒有得到與相關明確的說法「如何Scala編譯器解釋這些爲整數或浮點數點或雙打(和比較)」。
這不是真的斯卡拉相關,它更多的是一個ieee-754浮點算術問題。首先,在比較Int
與Double
時,它會投Int
到Double
(始終安全)。第二種情況很明顯 - 價值觀不同。
與第一種情況下會發生什麼事是,Double
類型不是能夠存儲許多顯著位數(17你的情況,64位浮點可存儲多達至16十進制數),所以便將價值1
。和1 == 1
。