朋友,减少功能给出否定答案
我正在尝试学习Scala编码并探索reduce()函数截至目前。我不明白,为什么下面的代码块乘以列表中的所有号码给我负输出:
val inputRDD=sc.parallelize(List(1,2,3,3,4,5,6,7,8,9,19,22,21,25,34,56,4,32,56,70))
val result=inputRDD.reduce((x,y)=>x*y)
println(result)`
我得到的答案“-1619001344”当我运行上面的代码。如果我尝试在减少而不是“*”中使用“+”,我会得到适当的总和,但不会以其他方式。我也尝试将结果转换为Int,String和Long
您是否尝试过计算实际结果?它可能是满溢的。 –
该产品是228235320014929920000不适合32或64位整数,所以确实溢出。 – WhiteViking
因此,如果我仍然_did_必须乘以所有这些数字并返回结果,是否有可能与其他数据类型或方法? –