cout << 0 * -5 << endl; // this is zero
cout << 0 * -5.0 << endl; // this is negative zero
私はC++を初めて使いました。なぜなら、倍精度浮動小数点数の乗算は、常に0になるはずなので、0倍に影響します。0を負の倍数で乗算すると、なぜ0になるのですか?
cout << 0 * -5 << endl; // this is zero
cout << 0 * -5.0 << endl; // this is negative zero
私はC++を初めて使いました。なぜなら、倍精度浮動小数点数の乗算は、常に0になるはずなので、0倍に影響します。0を負の倍数で乗算すると、なぜ0になるのですか?
、
cout << 0 * -5 << endl;
0および-5の両方は、符号付き整数です。整数は0
と-0
を区別しません。 0は、IEEE浮動小数点の両方0
と-0
値を定義するために、二重同様に昇格されますように、第2ラインで
、
cout << 0 * -5.0 << endl;
2番目の数字は、二重です。
整数と倍数の計算の違いから来ています。最初の式は2つの整数の間で行われますが、2番目の式は2つの浮動小数点数の間にあります。最初の行で
0回何もゼロでないという正気のルールセットは、負のゼロが正のゼロと等価であるとも言います。これがあなたを煩わせるなら、あなたは奇妙で矛盾したルールを使用しています。 –
負のゼロは浮動小数点の世界のものです。あなたが[概念的に準備されていない]場合は、奇妙なことが起こります(https://en.wikipedia.org/wiki/Signed_zero)。 – tadman