好吧所以我刚刚开始使用scala ..遇到了一个很大的奇怪问题。
import Math._
var num:Long=0
num+=600851475
num*=1000
println(num)
该代码工作正常,但以下不会编译错误,表示整数太大。
import Math._
var num:Long=0
num+=600851475000
println(num)
怎么了? scala不能处理12位数字吗? :/
答案 0 :(得分:25)
你的常数应为600851475000L
答案 1 :(得分:14)
即使num被声明为Long,编译器也会将600851475000读取为Int,它只能处理 [ - 2 ^ 32,2 ^ 32]中的数字 [-2 ^ 31,2 ^ 31)。将数字写为600851475000L告诉编译器将其视为Long,它将处理最多约18位的数字。
答案 2 :(得分:9)
如果没有L
(或l
)后缀,则将文字的值视为32位int。