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
     }

ここで"d"、 double への迅速な変換に使用することになっています。

実際には両方を変換する必要があることに注意してください。ただし、一方が double の場合、もう一方は暗黙的に変換されます。

于 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 を返します。したがって、1 つの値を double にキャストする必要があります。または、提案されたジストロイのように使用します

于 2013-06-25T07:33:31.280 に答える
-2

おお、時流!

同じことを言っている他の6つの投稿のいずれからもわからなかった場合に備えて、整数除算を行っています。

于 2013-06-25T07:42:52.500 に答える