您溢出了32位整数的大小。
考虑当我等于10时会发生什么:
sum = sum + 100000000000 //1 with 11 zeroes
但是可以存储在32位整数中的最大正数仅为20亿左右(2个带有9个零)。
实际上,情况变得更糟!中间计算将以有限的精度执行,并且一旦10 * 10 * 10 * 10
…的乘积溢出,那么10s将与一个奇怪的负数相乘,并且已经是错误的。
因此,最终得到的数字似乎并没有遵循任何算术规则,但实际上,一旦您知道原始整数的存储空间有限,它就非常有意义。
解决方案是使用64位
long,希望您也不要溢出,如果需要的话,则需要
BigInteger。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)