如果没有将L
附加到数字,此Stackoverflow post讨论了数字溢出的潜在问题:
以下是REPL的一个例子:
scala> 100000 * 100000 // no type specified, so numbers are `int`'s
res0: Int = 1410065408
避免此问题的一种方法是使用L
。
scala> 100000L * 100000L
res1: Long = 10000000000
或者指定数字的类型:
scala> val x: Long = 100000
x: Long = 100000
scala> x * x
res2: Long = 10000000000
正确指定数字类型的最佳做法是什么?
答案 0 :(得分:8)
如果你使用的话,总是使用L
。否则,您仍然可能遇到问题:
scala> val x: Long = 10000000000
<console>:1: error: integer number too large
val x: Long = 10000000000
^
scala> val x = 10000000000L
x: Long = 10000000000
由于类型归属而导致的转换发生在文字被解释为Int
之后。