为什么 3/2 等于 1 而不是 1.5?
Why does 3/2 equal 1 instead of 1.5?
为什么 Scala 不能像所有其他语言一样正确地进行数学计算?与 float 相同。
var x: Double = 3/2
returns 1
但是 3/2 应该等于 1.5。
注意integer literal and floating point literal
的区别
2 // integer literal representing a value of type Int
2.0 // double precision floating point literal representing a value of type Double
因此表达式 3/2
被键入为 Int
因为 2
是一个 Int
而 1
是一个 Int
,因此我们在整数之间有除法。因为 Int
代表整数,所以我们有
assert(3 / 2 == 1)
关键是要了解 文字 只是一种特殊的 shorthand 表示法,表示特定类型中的特定值。例如考虑字符文字
assert('3' / '2' == 1) // because 51 / 50 == 1
混淆可能源于它们看起来非常相似
val x: Int = 2
val x: Double = 2.0
val x: Char = '2'
为什么 Scala 不能像所有其他语言一样正确地进行数学计算?与 float 相同。
var x: Double = 3/2
returns 1
但是 3/2 应该等于 1.5。
注意integer literal and floating point literal
的区别2 // integer literal representing a value of type Int
2.0 // double precision floating point literal representing a value of type Double
因此表达式 3/2
被键入为 Int
因为 2
是一个 Int
而 1
是一个 Int
,因此我们在整数之间有除法。因为 Int
代表整数,所以我们有
assert(3 / 2 == 1)
关键是要了解 文字 只是一种特殊的 shorthand 表示法,表示特定类型中的特定值。例如考虑字符文字
assert('3' / '2' == 1) // because 51 / 50 == 1
混淆可能源于它们看起来非常相似
val x: Int = 2
val x: Double = 2.0
val x: Char = '2'