可能是一个非常简单的数学问题,但这让我有些困惑。
任何人都可以向我解释原因:
public class volumesphere
{
public static void main(String[] args)
{
double radius = 30.5;
double PI = Math.PI;
double volume = (4.0/3) * PI * Math.pow(radius, 3);
System.out.println(volume);
}
}
与此不同吗?:
public class volumesphere
{
public static void main(String[] args)
{
double radius = 30.5;
double PI = Math.PI;
double volume = (4/3) * PI * Math.pow(radius, 3);
System.out.println(volume);
}
}
特别是在行中:
double volume = (4/3) * PI * Math.pow(radius, 3);
第一种情况下的音量在大约1.19 * 10 ^ 5处返回正确的答案。然而,后者返回一个完全不同的结果,大约8.9 * 10 ^ 4。
有人可以向我解释一下吗?
答案 0 :(得分:1)
因为4/3
是1
而不是1.333...
。
当您执行int / int
时,结果会得到int
相反,4.0 / 3
为1.333...
,因为类型为double / int
,因此会产生double
。
答案 1 :(得分:0)
在4/3
中,4
是Integer
在4.0/3
中,4
是Double
作为整数,它不会有十进制值,因为它会加倍^^
结果是:1,333333333333用于这两个操作,但是Integer
它不会得到小数部分。