我正在尝试编写一个程序来模拟太阳系,并且正在将大量数字传递给一个函数来计算引力。 有问题的代码行是:
Earth.ptyForce = CalculateForce(Earth.ptyMass, Sun.ptyMass, dblSeparation)
位置:
Earth.ptyMass
等于5.9736 * 10 ^ 24
Sun.ptyMass
等于1.989 * 10 ^ 30
dblSeparation
仅等于300
,并在函数内部缩放。我只是系统溢出,我怀疑是因为数字太大,有没有办法解决?我考虑过只将较小的数字传递给函数,然后按比例放大它们,但我宁愿避免这样做(如果可能)。
只要需要CalculateForce
功能,如下所示:
Public Function CalculateForce(ByVal intMass1 As Integer, ByVal intMass2 As Integer, ByVal dblDistance As Double)
dblDistance *= dblDistanceScalar
Return dblGravitationalConstant * intMass1 * intMass2 / dblDistance ^ 2
End Function
该错误专门显示为:
System.OverflowException:“算术运算导致溢出。”
答案 0 :(得分:2)
您的数字太大,10 ^ 30大于2 ^ 32,请阅读以下内容: