2012-11-28 63 views
1

我收到一个异常说“算术运算导致溢出”,但我不知道为什么。算术运算导致溢出 - int64范围内的结果

我试图做下列计算

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

其等于2300169454。我已经声明了myvalue变量为Long,并且也尝试了Int64,所以这应该在范围内。有什么其他原因导致这个异常?

感谢

回答

4

你已经宣布分配作为long目标,但它看起来像你在执行操作中int算术。当所有算术完成为int时,它确实是溢出。如果您需要以64位执行算术运算,则需要操作数为long值 - 或者至少其中一些值。 (很难说如果没有看到真实的代码,到底在哪里改变东西。)

+0

谢谢!这正是问题,操作数被声明为int。欣赏快速的答案,另一个.net的教训! –

1

当你得到那个错误时,你使用的所有值都是int值(或更小)。

如果只是用在计算一个long值,结果是long值并没有溢出:

long myvalue = 2 * 11 * 37 * 41 * 41L * 41 * 41; 
相关问题