Java数学没有意义

时间:2013-05-20 17:45:31

标签: java double

好的,所以这是一个很大的代码中的一个问题,似乎没有意义。下面是代码问题...它在启动时打印Ratio = 0.0控制台应该等于~0,348。

public class MathTest {

    public static void main(String[] args) {

        double ratio = 29511 / 84812;
        System.out.println("Ratio = "+ ratio);

    }

}

编辑:

如果代码如下:

public class MathTest {

    public static void main(String[] args) {
        int int1 = 7;
        int int2 = 13;
        double double1 = int1/int2;
        System.out.println("double1 = "+ double1);

    }

}

它再次打印“0.0”。

4 个答案:

答案 0 :(得分:6)

当你说29511 / 84812时,你已经无意中使用了整数除法,这在Java中会丢失小数点。使用double文字(添加了.0)代替:

double ratio = 29511.0 / 84812.0;

其他可在此处使用的解决方案:

  • 将其中一个投放到double(double) 29511 / 84812
  • 使用“D”作为表示Java double文字的另一种方式:29511D / 84812D

答案 1 :(得分:3)

您正在进行整数除法,因为2951184812是整数。除法的结果为0,您将其保存为double,因此它变为0.0。

要解决此问题,请将赋值右侧的一个操作数强制转换为double。

double ratio = (double)29511 / 84812;

答案 2 :(得分:0)

double ratio = 29511 / 84812替换为double ratio = 29511.0 / 84812.0;

答案 3 :(得分:0)

这很有道理。你正在划分两个整数来得到一个整数。在这种情况下,这意味着0。