浮動小数点除算の異常: 倍精度で (3/5) がゼロになるのはなぜですか?
浮動小数点で算術演算を実行する場合多くの場合、プログラマーはしばしば驚くべき結果に遭遇します。このような異常の 1 つは、除算演算子 (/) で発生します。数値を倍精度浮動小数点値として保存しているにもかかわらず、(3/5) などの単純な除算を行うと、予期しないゼロが出力される可能性があります。
この動作は、3 と 5 が両方とも整数であるという事実に起因します。デフォルトでは C です。算術式で整数が使用されている場合、除算演算子は整数除算を実行し、結果の小数部分が破棄されます。
除算演算の修正
浮動小数点除算の結果を正しくするには、少なくとも 1 つのオペランドが浮動小数点値であることを確認する必要があります。これは、整数の 1 つを倍精度浮動小数点数に変換することで実現できます。たとえば、次のコードを使用できます。
double f = 3.0 / 5;
この場合、3.0 は倍精度浮動小数点数であり、コンパイラが小数部分を保持する浮動小数点除算を実行するようにします。
オペランドの 1 つを浮動小数点値に変換することにより、除算演算子は期待される結果を生成します。この例では 0.6 です。 場合。この手法により、プログラマは浮動小数点数の算術演算を正しく実行し、予期しないゼロ出力を回避できます。
以上がC で 3 を double として 5 で割ると整数の除算がゼロになるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。