算术运算导致溢出 - 在int64范围内的结果

时间:2012-11-28 22:52:06

标签: .net variables

我得到一个例外,说“算术运算导致溢出”,但我不确定原因。

我正在尝试进行以下计算

myvalue = 2 * 11 * 37 * 41 * 41 * 41 * 41

等于2,300,169,454。我已将myvalue变量声明为Long,并且还尝试了Int64,因此这应该在范围内。是否有其他原因引发此异常?

由于

2 个答案:

答案 0 :(得分:4)

您已将作业的目标声明为long,但看起来您正在操作中执行int算术运算。当所有算术都以int完成时, 溢出。如果需要以64位执行算术,则需要操作数为long值 - 或者至少其中一些值。 (如果没有看到真正的代码,很难确切地说明改变的地方。)

答案 1 :(得分:1)

当您收到该错误时,您使用的所有值都是int值(或更小)。

如果您只在计算中使用一个long值,则结果为long值并且没有溢出:

long myvalue = 2 * 11 * 37 * 41 * 41L * 41 * 41;