我收到一个异常说“算术运算导致溢出”,但我不知道为什么。
我正在尝试进行以下计算
我的值 = 2 * 11 * 37 * 41 * 41 * 41 * 41
等于 2,300,169,454。我已经将 myvalue 变量声明为 Long,并且还尝试了 Int64,所以这应该在范围内。抛出此异常还有其他原因吗?
谢谢
您已将赋值的目标声明为long
,但看起来您正在操作中执行int
算术运算。当所有算术都完成时int
,它确实会溢出。如果您需要以 64 位执行算术运算,则您需要操作数是long
值 - 或者至少是其中的一些。(如果没有看到您的真实代码,很难确切地说出在哪里进行更改。)
当您收到该错误时,您使用的所有值都是int
值(或更小)。
如果只long
在计算中使用一个值,则结果是一个long
值并且没有溢出:
long myvalue = 2 * 11 * 37 * 41 * 41L * 41 * 41;