【问题标题】:Arithmetic operation resulted in an overflow - result within int64 range算术运算导致溢出 - 结果在 int64 范围内
【发布时间】:2012-11-28 22:52:05
【问题描述】:

我收到一个异常提示“算术运算导致溢出”,但我不知道为什么。

我正在尝试进行以下计算

我的值 = 2 * 11 * 37 * 41 * 41 * 41 * 41

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

谢谢

【问题讨论】:

    标签: .net variables


    【解决方案1】:

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

    【讨论】:

    • 谢谢!这正是问题所在,操作数被声明为 int。感谢您的快速回答,这是另一个 .net 经验教训!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-15
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多