如何比较scala中的两种不同类型的对象?

时间:2012-04-07 20:30:46

标签: scala floating-point

当我检查scala解释器中的值时:

scala> 1==1.0000000000000001

res1: Boolean = true

scala> 1==1.000000000000001

res2: Boolean = false

这里我没有得到与“scala编译器如何将这些解释为整数或浮点或双精度(和比较)”相关的清晰视图。

1 个答案:

答案 0 :(得分:9)

它与Scala并不相关,它更像是浮点运算问题。首先,在将IntDouble进行比较时,它会将Int投放到Double(始终安全)。第二种情况很明显 - 价值观不同。

第一种情况会发生的情况是Double类型无法存储许多有效数字(在您的情况下为17,64位浮点数可以存储最多16位小数),因此它会使价值为1。并1 == 1