質問

#include <iostream>
using namespace std;

int main()
{
    double u = 0;
    double w = -u;
    cout << w << endl;
    return 0;
}

なぜこの素晴らしいコードが出力するのか -0 そしてそうではありません 0, 、やはり?

役に立ちましたか?

解決

浮動小数点数の IEEE 754 標準では、仮数とは別の符号ビットがあり、ゼロが負の値になることが許可されています。 ウィキペディア これを説明できるはずです。

他のヒント

IEEE 浮動小数点の場合 0 そして -0 両方とも異なる値であり、 ここ 「特別な値」の下:

-0と+0は異なる値であることに注意してください。ただし、どちらも等しいと比較されます。

浮動小数点演算の IEEE 754 標準では、以下を区別しています。 +0 そして -0, 、これは、符号が依然として重要である、ゼロに丸められる非常に小さな数値を扱うときに使用できます。

なぜなら、「負のゼロ」は有効な数値だからです。

http://en.wikipedia.org/wiki/%E2%88%920_(数字)

この記事を見てください。 http://en.wikipedia.org/wiki/Floating_point. 。値がゼロであっても、符号ビットがあることに注意してください。

なぜなら、double は実際に値 -0、+0、-infinity、+infinity、NaN を持つことができ、これらは 0/0 などのさまざまな興味深い式の結果になる可能性があるからです。

見て ここ 詳細については。

あなたの期待は間違っているからです。

IEEE では、正のゼロと負のゼロを別々に表すことが要求されています。

それがここで見ているものです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top