【发布时间】:2013-12-30 19:57:01
【问题描述】:
我在“不耐烦的 Scala”中做练习,我发现根据我从 Int 和 BigInt 中选择的 var 类型,我得到了两个不同的结果。
我认为我忽略了一些微不足道的事情,但不知道是什么?任何帮助,将不胜感激。谢谢。
为什么我使用以下两个代码 sn-p 会得到两个不同的结果?
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
【问题讨论】:
-
因为
9415087488(~10^10) 大于Int.MaxValue(~2 * 10^9)。见Integer@wiki。 -
啊。是的。傻我。感谢您的快速回复。
-
您可能希望包含此类问题的输出等信息。更多信息使您的问题更清楚。
-
另外:这里不需要使用
var,可以使用"Hello".map{i => i: BigInt}.product或"Hello".foldLeft(1: BigInt){_*_}。
标签: scala