将大量传递给函数时系统溢出

时间:2018-09-02 15:27:26

标签: vb.net stack-overflow

我正在尝试编写一个程序来模拟太阳系,并且正在将大量数字传递给一个函数来计算引力。  有问题的代码行是:

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:“算术运算导致溢出。”

1 个答案:

答案 0 :(得分:2)