vb.net - 将大数传递给函数时系统溢出
问题描述
我正在尝试编写一个程序来模拟太阳系,并将大量数字传递给一个函数来计算引力。有问题的代码行是:
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: '算术运算导致溢出。'
解决方案
推荐阅读
- sql-server - 使用 MS SQL 的演示站点的一种方式复制
- javascript - 使用数据库进行 GET 调用
- liquidsoap - 在liquidsoap中替换字符串中的子字符串
- angular - 角度路由不适用于浏览器刷新
- git - 查看远程分支的提交日志(我知道它不能完成),尽可能少的签出
- python - 计算 4*(1-(1/3)+(1/5)-(1/7)+...+(1/2n-1)) 的python代码
- regex - 地址提取
- ssh - ssh:无法解析主机名 ubuntu:名称解析暂时失败
- java - 如何在android中分离JSON对并存储在sqlite数据库中?
- python - 考虑到附近的山脉(使用 Python),如何计算给定日期和位置的日照时数?