-3

重複の可能性:
Java で 2 つの整数の除算が 0.0 を返すのはなぜですか?

私はいくつかの非常に紛らわしい問題を抱えています..いくつかのものを計算したいのですが、いくつかのデバッグの後、Javaがこの算術演算を計算することがわかりました: 2 / 4 = 0.0しかし、それは0.5でなければなりません

2 と 4 は整数変数に格納され、結果は double 型に格納されます。

私は明らかに何かを逃しましたか?

4

3 に答える 3

7

これは整数除算によるものです (整数除算は 0 に向かって丸められます)。オペランドの 1 つを double 型にキャストします。

例:

double temp = (double)2/4

正しい結果が得られます。

于 2012-12-03T15:18:39.173 に答える
4

使用する

myDouble = (double) integerWhoseValueIs2 / integerWhoseValueIs4

double に格納するという事実は、2 つの整数の除算が整数になるという事実を変更しません。貯めてからでは遅いです。

Java言語仕様から:

整数除算は 0 に向かって丸められます。つまり、2 進数値昇格 (§5.6.2) 後の整数であるオペランド n と d に対して生成される商は、|d · q| を満たしながら、その大きさができるだけ大きい整数値 q です。≤ |n|。

于 2012-12-03T15:18:34.073 に答える
0

へのキャストを記述しない場合double、結果は常にint.

double a = (double) 2/4;

于 2012-12-03T15:20:04.413 に答える