除算結果の混乱: Double として保存されているにもかかわらず 3/5 がゼロになるのはなぜですか?
除算 (/) を実行しようとしたときC では、関係するデータ型を理解することが重要です。整数 (int 型) の除算は、小数部分を切り捨てる整数除算になります。ただし、double を扱う場合、予期しない結果が生じる可能性があります。
例:
次のコードを考えてみましょう:
#include <iostream> int main() { double f = 3 / 5; std::cout << f; return 0; }
予期しない出力:
多くの人が驚いたことに、このコードは次のように出力します。予想される 0.6 ではなく 0 です。
説明:
3 と 5 は両方とも整数であるため、除算演算子 (/) は整数の除算を実行します。これを修正するには、1 つのオペランドが実数であることを確認します。これは、次の修正バージョンに見られるように、小数点を追加することで実現できます。
double f = 3.0 / 5;
この修正により、コンパイラは浮動小数点除算を実行するようになり、正しく結果は 0.6.
になります。 結論:
double を使用して除算を実行する場合、関係するデータ型を考慮することが不可欠です。浮動小数点オペランドを使用すると、結果の小数部分が確実に保持され、望ましい結果が得られます。
以上がDouble を使用すると、C の整数除算で予期しない結果が 0 になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。