1. ホーム
  2. java

[解決済み] intの割り算。1/3の結果が==0になるのはなぜですか?

2022-03-03 13:10:13

質問

このようなコードを書いていました。

public static void main(String[] args) {
    double g = 1 / 3;
    System.out.printf("%.2f", g);
}

結果は0です。これはなぜでしょうか、どうすれば解決できますか?

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

2つのオペランド(1と3)は整数であるため、整数演算(ここでは除算)が行われます。結果変数をdoubleと宣言すると、暗黙のうちに変換が行われるだけである 分割後 .

整数の割り算は、もちろんゼロに丸められた本当の割り算の結果を返します。の結果は 0.333... は、ここでは0に切り捨てられる。(プロセッサは実際には丸めをしませんが、それでもそのように考えることができることに注意してください)。

また、もし ともに オペランド (数値) が浮動小数点数 (3.0 と 1.0) で与えられている場合、あるいは 最初 の場合、浮動小数点演算が使用され、次のようになります。 0.333... .