0

我有简单的代码来测试,请检查以下内容。为什么我的代码没有返回预期结果。

public class test {

public static void main(final String a[]) {
    final double d1 = 1 / 1000; // should be 0.001
    final double d2 = 2 / 20; // should be  0.1
    System.out.println(d1 + "--" + d2); // 0.0--0.0
 }
}
4

7 回答 7

10

您正在对整数进行除法,从而产生整数,0,存储为0.0

用这个 :

final double d1 = 1d / 1000; // divide a double by an integer -> get a double
于 2013-06-25T07:33:52.760 回答
3

你所要做的

public static void main(String[] args) { 
        final double d1 = 1d / 1000; // 0.001
        final double d2 = 2d / 20; // 0.1
        System.out.println(d1 + "--" + d2); // 0.001--0.1
     }

其中 The"d"应该用于快速转换为双倍。

请记住,实际上您需要转换它们。但是如果其中一个是双倍的,则另一个将被隐式转换。

于 2013-06-25T07:34:25.123 回答
2

您正在执行整数除法而不是双除法。

例如,更改为:

public class test {

public static void main(final String a[]) {
    final double d1 = 1.0 / 1000.0; // 0.001
    final double d2 = 2.0 / 20.0; // 0.1
    System.out.println(d1 + "--" + d2); // 0.0--0.0
 }
}
于 2013-06-25T07:34:11.743 回答
0

利用

   final double d1 = (double)1 / 1000; // 0.001
    final double d2 = (double)2 / 20; // 0.1
    System.out.println(d1 + "--" + d2); // 0.0--0.0

原因:

1 和 100,都是整数。所以 1/100 肯定是一个整数。所以虽然理论值是 0.001,但是因为它会返回一个整数,所以它会返回 0。所以你需要将一个值转换为 double。或使用建议的dystroy

于 2013-06-25T07:33:31.280 回答
0
public class test {

public static void main(final String a[]) {
    final double d1 = 1d / 1000d; // 0.001
    final double d2 = 2d / 20d; // 0.1
    System.out.println(d1 + "--" + d2); // 0.0--0.0
 }
}
于 2013-06-25T07:35:36.537 回答
0

尝试这个,

public static void main(final String a[]) {
    final double d1 = 1 / 1000d; // 0.001
    final double d2 = 2 / 20d; // 0.1
    System.out.println(d1 + "--" + d2); // 0.0--0.0
 }
于 2013-06-25T07:37:24.710 回答
-2

哦,一个潮流!

您正在进行整数除法,以防您无法通过其他六个帖子中的任何一个告诉您同样的事情。

于 2013-06-25T07:42:52.500 回答