ホームページ > Java > &#&チュートリアル > Java 整数除算で 1 / 3 が 0 に等しいのはなぜですか?

Java 整数除算で 1 / 3 が 0 に等しいのはなぜですか?

Barbara Streisand
リリース: 2024-12-28 07:49:10
オリジナル
240 人が閲覧しました

Why Does 1 / 3 Equal 0 in Java Integer Division?

整数の除算: 1/3 == 0 の背後にある真実を明らかにする

Java の整数除算は、特に次の場合に複雑な概念になることがあります。 10 進数値が含まれます。ここでの問題は、1 / 3 の結果が 0.333 であると予想しているにもかかわらず、なぜ 0 に等しいのかということです...

算術の公開

この特定の場合この場合、両方のオペランド (1 と 3) が整数であるため、デフォルトで整数演算が使用されます。結果変数 (g) を double として宣言しているにもかかわらず、除算の後に暗黙の変換が発生します。

整数除算の複雑さ

浮動小数点数とは対照的に、整数除算 -点除算では、結果がゼロに向かって丸められます。したがって、除算の真の結果 0.333... は 0 に切り捨てられます。プロセッサは基本的に、小数部分が存在しないかのように処理します。

浮動小数点演算: 別の話

両方のオペランドが浮動小数点数 (3.0 および 1.0) として指定された場合、浮動小数点演算が優先されます。この結果、期待される小数値は 0.333 になります。最初のオペランドのみが浮動小数点 (3.0 と 1 など) である場合でも、浮動小数点演算が引き続き使用されることに注意してください。

実用的解決策

10 進数の結果を取得するには、浮動小数点除算を明示的に実行する必要があります。これは、両方のオペランドを double または float にキャストすることで実現できます。

public static void main(String[] args) {
    double g = (double) 1 / 3; // Explicitly cast to double
    System.out.printf("%.2f", g);
}
ログイン後にコピー

あるいは、BigDecimal クラスを使用して、より正確な数値演算を行うこともできます。

以上がJava 整数除算で 1 / 3 が 0 に等しいのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート