scala不会采用12位整数

时间:2010-09-05 01:42:13

标签: scala

好吧所以我刚刚开始使用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位数字吗? :/

3 个答案:

答案 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。