Я пытаюсь написать программу для моделирования солнечной системы, и я передаю большие числа в функцию для расчета гравитационной силы.
Соответствующая строка кода:
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: 'Арифметическая операция вызвала переполнение.'