これは私のコードです:
double width = 50/110000;
System.out.println("width ori is "+width );
出力は次のとおりです。0.00000000000
どうしたの ?期待される出力は4.5454545454545455E-4
理由を説明できる人はいますか?
これは私のコードです:
double width = 50/110000;
System.out.println("width ori is "+width );
出力は次のとおりです。0.00000000000
どうしたの ?期待される出力は4.5454545454545455E-4
理由を説明できる人はいますか?
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;
の結果は をint/int
返しますinteger
。
したがって、小数部分が切り捨てられ、整数になります
キャストする必要があります:
double width = (double)50/110000;
@Josh M が指摘したように、次のことも試すことができます。
double width = 50d / 110000d;