我的代码试图将12303乘以174596。
任何体面的计算器都能够为此提供答案,那么为什么我会遇到OverflowException?当我直接在立即窗口中执行它时也会发生这种情况。
代码用于确定二进制文件中某个值的位置。文件本身的大小为7 Gb。
有什么方法可以解决这个问题吗?
Dim position As Long = hisFileHeader.StreamStartDataPosition +
(TSIdx * hisFileHeader.StreamDataBlockSize)
tsidx
的值为12303,StreamDataBlockSize
的值为174596
答案 0 :(得分:1)
我猜测tsidx
和StreamDataBlockSize
是Integer
类型。 Integer
类型可以容纳的最大数字是2,147,483,647。然后使用括号中的乘法期望整数结果,但答案超出Integer
类型的范围。将您的代码更改为..
Dim position As Long = hisFileHeader.StreamStartDataPosition + (CLng(TSIdx) * hisFileHeader.StreamDataBlockSize)
并且乘法将以期望Long
类型完成。