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 サイトの他の関連記事を参照してください。