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”教科书中,如果你感兴趣的话,会稍微复杂一点,但是看到一本书中有一些新奇的问题,这很酷。