使用BigInteger计算地球质量

时间:2014-10-31 03:47:40

标签: java math physics biginteger

我正在尝试使用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

因此,我在这里差不多有一百万,我仍然缺少几个数量级,任何精通数学/物理的人都会在这里提供帮助。

1 个答案:

答案 0 :(得分:5)

^不是权力,而是二进制XOR

  

二进制异或运算符如果在一个操作数中设置,则复制该位,但不是   两者。

你想要

Math.pow(x, y);