Java 数学/舍入不正确?

Java 数学/舍入不正确?,java,math,rounding,Java,Math,Rounding,所以在下面的代码中,由于某种原因,我得到了完全错误的答案 import java.util.*; import java.io.*; import java.lang.*; import type.lib.*; public class Check03B { public static void main(String[] args) { PrintStream print = new PrintStream(System.out); Scan

所以在下面的代码中,由于某种原因,我得到了完全错误的答案

import java.util.*;
import java.io.*;
import java.lang.*;
import type.lib.*;

public class Check03B

{
    public static void main(String[] args)
    {
        PrintStream print = new PrintStream(System.out);
        Scanner scan = new Scanner(System.in);
        print.printf("Enter the satellite altitude in km ... ");
        double A = scan.nextDouble();
        double K = 0.00995;
        double R = 6378;
        double z = (K * (A + R));
        double P = Math.pow(z,(3 / 2));
        double x = (P / 3600);
        double y = (P / 60);
        print.printf("Orbital period = " + x + " hours, " + y + " minutes, and " + "%.1f", P).print(" seconds");
    }
}
答案应该是:995小时56分钟21.1秒。如果输入为500000

舍入不是我的问题,我的问题是为什么我会得到: 1.4小时83.9秒。。。等等。

问题就在这里

double P = Math.pow(z,(3 / 2));
更具体地说

(3 / 2)
因为这是整数数学。你可以用

(3 / (double) 2)

问题就在这里,

double P = Math.pow(z,(3 / 2));
更具体地说

(3 / 2)
因为这是整数数学。你可以用

(3 / (double) 2)

3/2=1,因为它是整数
在除法中必须使用float或double

3/2=1,因为它是整数

你必须在除法中使用float或double

你的问题似乎得到了回答,但我很好奇:你是从哪里得到这个轨道周期方程的?@markspace在“Java By Abstraction”教科书中如果你感兴趣的话,会稍微复杂一点,但是看到一本有一些新问题的教科书是很酷的。你的问题似乎得到了回答,但我很好奇:这个轨道周期方程是从哪里来的?@markspace在“Java By Abstraction”教科书中,如果你感兴趣的话,会稍微复杂一点,但是看到一本书中有一些新奇的问题,这很酷。