1. ホーム
  2. java

[解決済み] intをintで割ってdoubleに格納する際に予期せぬ結果が発生する [重複]。

2022-02-19 05:02:19

質問

変な問題があるんだけど。

このコードは単純にintを別のintで割って、結果をdouble変数に格納し、それを表示するものです。

int a = 200;
int b = 557;

double divisionResult = a / b;

System.out.println("Result: " + divisionResult);

このコードを実行すると、次のような出力が得られます。

Result: 0

これは奇妙なことで、なぜなら 200/5570.3590664272890485

をキャストすると ab から double を分割行に

double divisionResult = (double) a / (double) b;

完璧に動作しています。

なぜ本当の除算結果を得るために、変数を double にキャストしなければならないのですか?

どのように解決するのですか?

なぜなら、整数の割り算では、答えが完全な整数でない場合、小数点以下の桁が削除されるからです(整数の割り算では整数値が得られます)。

なお、両方の整数をキャストする必要はなく、片方だけをキャストすれば、もう片方は暗黙のうちに変換されます。

なぜキャストの後に動作するのでしょうか?

なぜなら、キャストの方が / . つまり、まずキャストして、次にデバイディングするのです。もしそうでなければ、次のようになります。 0.0 .