double someZero = 0;
std::cout << 0 - someZero << '\n'; // prints 0
std::cout << -someZero << std::endl; // prints -0
何が負のゼロになりますか、それを防御すべきですか(つまり、マイナスを変数に打つのではなく減算を使用しますか?
double someZero = 0;
std::cout << 0 - someZero << '\n'; // prints 0
std::cout << -someZero << std::endl; // prints -0
何が負のゼロになりますか、それを防御すべきですか(つまり、マイナスを変数に打つのではなく減算を使用しますか?
負のゼロは、例えば、いくつかの用途を有します。
"負のゼロ" の背景/用途/落とし穴に関する情報をいくつかのリンク:
:
複雑で計算するときにIEEE 754で署名されたゼロの包含は、特に、いくつかの重大な問題[1]での数値精度を達成することがはるかに容易にすることが主張されています基本機能[2]。
第一の基準は、ダウンロードhereのために利用可能であるW.カハンによって、「何も符号ビットについて複雑な初等関数や多くの騒ぎのための分枝切断」です。
この論文の例は、1/(+0)
と1/(-0)
です。ここで、ゼロの符号は、最初の式が+inf
に等しく、2番目の式が-inf
になるため、大きな違いがあります。
私が見ることができる2つだけ本当のユースケースがあります。
ほとんどの場合、それは役に立たず、避けるべきです。
浮動小数点用のIs there a negative zero?とIEEE 754 specもご覧ください。ゼログッドを締結また
で:ゼロを拡大実数ように1/-0のバリアント=-∞と1/+ 0 = +∞、分割によって見なすことができる
ゼロは±0 /±0に対してのみ定義されます。
負符号付きゼロは、x→0-、x→0-、またはx→↑0と表示される片側制限として下から0に近づくという数学的解析の概念をエコーします。表記「-0」は、ゼロに丸められた小さな負の数を示すために非公式に使用することができる。負のゼロの概念は、統計力学や他の分野でも理論的な応用があります。
正、負、符号なし、2つの負数の減算、または2つの反対符号と等しい大きさの加算を使用して、符号なしのゼロを生成することは役に立ちましたか?符号付きゼロで除算すると無限大になりますが、符号なしゼロで除算するとNaNが返されます。 – supercat
私は測定アプリケーションを作っています。そして、-0は混合数(足とインチに分けるなど)に非常に便利です。
"feet"と "inches"に分離しようとしている変数 "length"があるとします。
(これはJavaコードですが、C++でも同じ考えが当てはまります)。長さが-1フィートと0フィートの間である場合
feet = Math.signum(length) * Math.floor(Math.abs(length/12));
// could also do feet = length>0 ? Math.floor(length/12) : Math.ceil(length/12)
inches = Math.abs(length) % 12;
、我々はそれが言いたいと思い-0足のために私たちはそれが負であることを知っています。
http://en.wikipedia.org/wiki/Signed_zero –