【发布时间】:2012-11-28 22:52:05
【问题描述】:
我收到一个异常提示“算术运算导致溢出”,但我不知道为什么。
我正在尝试进行以下计算
我的值 = 2 * 11 * 37 * 41 * 41 * 41 * 41
等于 2,300,169,454。我已经将 myvalue 变量声明为 Long,并且还尝试了 Int64,所以这应该在范围内。抛出此异常是否还有其他原因?
谢谢
【问题讨论】:
我收到一个异常提示“算术运算导致溢出”,但我不知道为什么。
我正在尝试进行以下计算
我的值 = 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;
【讨论】: