Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在scala中使用int和BigInt会产生两种不同的结果?_Scala - Fatal编程技术网

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

为什么在scala中使用int和BigInt会产生两种不同的结果?,scala,Scala,我在做“不耐烦的Scala”的练习,我发现基于我从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 p

我在做“不耐烦的Scala”的练习,我发现基于我从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
var mul:BigInt=1

因为(我只是想把评论变成一个答案,这样问题就可以解决了

1)
BigInt
大于
Int
;具体来说,它大于
Int.MaxValue
。您的第二个示例已满,
9415087488
是正确答案

2) 在Scala中强烈反对使用这样的变量。更“实用”的解决方案是将字符映射到bigint,然后使用
.product

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

因为
9415087488
(~
10^10
)大于
Int.MaxValue
(~
2*10^9
)。看,啊。对我真傻。感谢您的快速响应。您可能希望包含类似于此类问题的输出的信息。更多信息使您的问题更清楚。另外:您不需要在这里使用
var
,您可以使用
“Hello”.map{i=>i:BigInt}.product
“Hello”.foldLeft(1:BigInt){u*}