Java - 双号返回意外

时间:2017-09-25 10:20:54

标签: java math

可能是一个非常简单的数学问题,但这让我有些困惑。

任何人都可以向我解释原因:

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。

有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:1)

因为4/31而不是1.333...

当您执行int / int时,结果会得到int 相反,4.0 / 31.333...,因为类型为double / int,因此会产生double

答案 1 :(得分:0)

4/3中,4Integer

4.0/3中,4Double

作为整数,它不会有十进制值,因为它会加倍^^

结果是:1,333333333333用于这两个操作,但是Integer它不会得到小数部分。