为什么3/2等于1而不是1.5? [重复]

问题描述 投票:-2回答:1

为什么Scala不能像所有其他语言一样正确地进行数学运算?与浮点数相同。

var x: Double = 3/2 

返回1,但3/2应该等于1.5。

scala double
1个回答
0
投票

注意integer literalfloating 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/2Int2Int,因此将表达式1键入为Int,因此我们在整数之间进行除法。因为Int代表整数,所以我们有

assert(3 / 2 == 1)

关键是要理解literals只是表示特定类型中特定值的特殊速记符号。例如考虑字符文字

assert('3' / '2' == 1)

混乱可能源于它们看起来很相似的事实

val x: Int    = 2
val x: Double = 2.0
val x: Char   = '2'
© www.soinside.com 2019 - 2024. All rights reserved.