数学/舍入不正确?

时间:2014-11-19 06:32:16

标签: 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);
        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秒......等等。

2 个答案:

答案 0 :(得分:6)

问题出在这里,

double P = Math.pow(z,(3 / 2));

更具体地说

(3 / 2)

因为那是整数数学。你可以用

(3 / (double) 2)

(1.5)

答案 1 :(得分:0)

double P = Math.pow(z,(3 / 2)); 
double x = (P / 3600);
double y = (P / 60);

3/2 = 1因为它的整数
你必须在分裂中使用float或double