我正在尝试使用BigInteger来计算地球的质量,但实际上并没有增加任何东西。
我用来计算地球质量的公式是:M = ar2 / G = 5.98×1024 kg。 a是重力加速度(9.8 m / s平方),r是地球的半径((6.4)*(10 ^ 6))和Big-G((6.673)*(10 ^ -11))引力常数。
我应该得到的值是:5.97219×10 ^ 24 kg = 5,972,190,000,000,000,000,000,000,000,但我当前输出的值是:-9353。显然是一个巨大的差异,所以任何帮助将不胜感激。
这是我到目前为止所拥有的......
double bigG = (6.673) * (10^-11);
double radiusSquared = 6371^2;
double acceleration = (10^2); (obviously rounded here from 9.8)
double mass = (acceleration*radiusSquared)/bigG;
BigInteger massBig = new BigDecimal(mass).toBigInteger();
System.out.println("mass of earth: "+massBig);'
我不确定我是否只是输入了一些错误,或者我没有认识到Java的某些基础过程,因为我不熟悉Java和物理。
谢谢
好的,我做了你说的话,似乎解决了部分问题...... 这是更新的代码:
public static void getPlanetMass(){
double bigG = (6.673) * (Math.pow(10, -11));
double radiusSquared = (Math.pow(6371, 2));
double acceleration = (Math.pow(9.8,2)); //(obviously rounded here from 9.8)
double mass = (acceleration*radiusSquared)/bigG;
BigInteger massBig = new BigDecimal(mass).toBigInteger();
System.out.println("mass of earth: "+massBig);
}
当前产出:58,417,939,781,807,300,608 正确产出:5,973,600,000,000,000,000,000,000,000
因此,我在这里差不多有一百万,我仍然缺少几个数量级,任何精通数学/物理的人都会在这里提供帮助。
答案 0 :(得分:5)
^
不是权力,而是二进制XOR
。
二进制异或运算符如果在一个操作数中设置,则复制该位,但不是 两者。
你想要
Math.pow(x, y);