为什么这个乘法会导致 OverflowException?
Why does this multiplication cause an OverflowException?
我的代码尝试将 12303 乘以 174596。
任何像样的计算器都能够对此提供答案,那么为什么我会得到一个 OverflowException?当我直接在 Immediate Window.
中执行它时也会发生这种情况
该代码用于确定某个值在二进制文件中的位置。文件本身的大小为 7 Gb。
有什么办法可以解决吗?
Dim position As Long = hisFileHeader.StreamStartDataPosition +
(TSIdx * hisFileHeader.StreamDataBlockSize)
tsidx
的值为 12303,StreamDataBlockSize
的值为 174596
我猜 tsidx
和 StreamDataBlockSize
是 Integer
类型。 Integer
类型可以容纳的最大数字是 2,147,483,647。然后完成括号中的乘法,期望得到一个整数结果,但答案超出了 Integer
类型的范围。将您的代码更改为 ..
Dim position As Long = hisFileHeader.StreamStartDataPosition + (CLng(TSIdx) * hisFileHeader.StreamDataBlockSize)
并且乘法将在 Long
类型的期望下完成。
我的代码尝试将 12303 乘以 174596。
任何像样的计算器都能够对此提供答案,那么为什么我会得到一个 OverflowException?当我直接在 Immediate Window.
中执行它时也会发生这种情况该代码用于确定某个值在二进制文件中的位置。文件本身的大小为 7 Gb。
有什么办法可以解决吗?
Dim position As Long = hisFileHeader.StreamStartDataPosition +
(TSIdx * hisFileHeader.StreamDataBlockSize)
tsidx
的值为 12303,StreamDataBlockSize
的值为 174596
我猜 tsidx
和 StreamDataBlockSize
是 Integer
类型。 Integer
类型可以容纳的最大数字是 2,147,483,647。然后完成括号中的乘法,期望得到一个整数结果,但答案超出了 Integer
类型的范围。将您的代码更改为 ..
Dim position As Long = hisFileHeader.StreamStartDataPosition + (CLng(TSIdx) * hisFileHeader.StreamDataBlockSize)
并且乘法将在 Long
类型的期望下完成。