为什么在scala中使用int和BigInt会产生两种不同的结果?

时间:2013-12-29 20:09:18

标签: scala

我正在练习“Scala for the Impatient”,我发现根据我从Int和BigInt中选择的var类型得到两个不同的结果。

我认为我忽略了一些微不足道但却不知道的是什么?任何帮助,将不胜感激。感谢。

为什么我会在以下两个代码段中得到两个不同的结果?

var mul:BigInt= 1
for(i<-"Hello") mul = mul * i
print(mul) // mul = 9415087488

var mul:Int = 1
for(i<-"Hello") mul = mul * i
print(mul) // mul = 825152896

1 个答案:

答案 0 :(得分:0)

只是为了在这里得到答案的答案,所以问题可以解决......

1)BigInt大于Int;具体来说,它比Int.MaxValue大。你的第二个例子是溢出的,9415087488是正确答案。

2)在Scala中强烈建议不要使用像这样的变量。更“实用”的解决方案是将字符映射到BigInts,然后使用.product

"Hello".map(BigInt(_)).product