9

これは私のコードです:

double width = 50/110000;
System.out.println("width ori is "+width );

出力は次のとおりです。0.00000000000

どうしたの ?期待される出力は4.5454545454545455E-4

理由を説明できる人はいますか?

4

3 に答える 3

37

2 つの整数を除算しているため、整数部分 (整数除算) のみが使用されます。

コンピュータ プログラムでの整数の除算には、特別な注意が必要です。一部のプログラミング言語では、整数除算を扱います (つまり、整数の商を答えとして与えます)。したがって、答えは整数です。

例:

In real life                  In Java

4/3  = 1.33333                4/3  = 1
25/12 = 2.083333              25/12 = 2
9/2 = 4.5                     9/2 = 4
50/110000 = 0.000454545       50/110000 = 0

それを避けるために、数字の1つ(または両方ですが、実際には役に立たない)をキャストできますdouble

double width = (double)50/110000;
double width = 50d/110000;
double width = 50.0/110000;
于 2013-10-27T16:11:14.567 に答える
2

の結果は をint/int返しますinteger

したがって、小数部分が切り捨てられ、整数になります

キャストする必要があります:

double width = (double)50/110000;

@Josh M が指摘したように、次のことも試すことができます。

double width = 50d / 110000d;
于 2013-10-27T16:13:58.047 に答える