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