-2

好的,所以这是一大段代码中的一个问题,似乎没有意义。下面是问题的代码......它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

4 回答 4

6

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

double ratio = 29511.0 / 84812.0;

其他适用的解决方案:

  • 将其中一个转换为double(double) 29511 / 84812
  • 使用 'D' 作为另一种表示 Javadouble文字的方式:29511D / 84812D
于 2013-05-20T17:46:55.333 回答
3

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

要解决此问题,请将赋值右侧的一个操作数转换为双精度数。

double ratio = (double)29511 / 84812;
于 2013-05-20T17:47:25.257 回答
0

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

于 2013-05-20T17:47:01.343 回答
0

这很有意义。您将两个整数相除以获得一个整数。在这种情况下,这意味着 0。

于 2013-05-20T17:47:08.210 回答