为什么这个乘法会导致 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

我猜 tsidxStreamDataBlockSizeInteger 类型。 Integer 类型可以容纳的最大数字是 2,147,483,647。然后完成括号中的乘法,期望得到一个整数结果,但答案超出了 Integer 类型的范围。将您的代码更改为 ..

Dim position As Long = hisFileHeader.StreamStartDataPosition + (CLng(TSIdx) * hisFileHeader.StreamDataBlockSize)

并且乘法将在 Long 类型的期望下完成。