ホームページ > Java > &#&チュートリアル > Java で整数の除算が 10 進数の結果ではなく 0.0 を生成するのはなぜですか?

Java で整数の除算が 10 進数の結果ではなく 0.0 を生成するのはなぜですか?

Susan Sarandon
リリース: 2024-12-26 02:18:14
オリジナル
852 人が閲覧しました

Why Does Integer Division in Java Produce 0.0 Instead of a Decimal Result?

Java の整数除算の結果が 0.0 になるのはなぜですか?

Java で 2 つの整数を除算すると、結果が期待どおりにならないことがよくあります。

int totalOptCount = 500;
int totalRespCount = 1500;
float percentage = (float) (totalOptCount / totalRespCount);
ログイン後にコピー

この場合、パーセンテージは次のようになると予想されます。 0.33 (または四捨五入0.333)。ただし、実際には 0.0 が返されることに驚くかもしれません。なぜそうなるのでしょうか?

レスキューへの変換順序

この予期しない結果の理由は、Java が計算を実行する順序にあります。 2 つの整数を除算すると、Java はそれらを自動的に double に変換します。ただし、この変換は除算が実行されるまで行われません。したがって、上記の例では、計算は実際には次のように行われます:

double percentage = totalOptCount / totalRespCount;
ログイン後にコピー

これにより、倍精度値 0.0 が得られます。この問題を解決するには、除算を実行する前にオペランドの 1 つを float または double に明示的に変換する必要があります。

float percentage = ((float) totalOptCount) / totalRespCount;
ログイン後にコピー

これで、float への変換が最初に行われ、除算は float で行われます。

10 進数の書式設定精度

正しい結果が得られたら、それを特定の小数精度にフォーマットすることができます。これを行うには、String.format() メソッドを使用できます。

String str = String.format("%2.02f", percentage);
ログイン後にコピー

これにより、パーセント変数が小数点以下 2 桁の文字列にフォーマットされ、値は 00.33.

になります。

以上がJava で整数の除算が 10 進数の結果ではなく 0.0 を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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