|
-0(マイナスゼロ)、あるいは負のゼロとは、数値のゼロにマイナスの符号をつけたものである。 通常の算術では、負のゼロは正のゼロである+0と同一であると見なされるが、両者を分けて考える方が望ましい場合や、分けて考えざるを得ない場合がある。 そのようなケースとして、以下のものがある * 極限操作に伴って生じるケース。例えば右方極限 ''x'' →+0と左方極限 ''x'' → -0 を分けて考えるケースや、1/∞、1/(-∞)をそれぞれ+0、-0と見なすケース * 正負の概念を持つ数値表現において、正負の概念を0にも適応する事で生じるケース。おもにコンピューター・プログラムで問題になる。 * 数値計算において、誤差を丸める際、 「0 より小さいが -1 まで丸めるには絶対値が小さすぎる量」の意味で負のゼロを用いるケース * 統計力学における負温度 最初のものについては片側極限の項目、最後のものは負温度の項目を参照。 本項ではそれ以外の2つのケースについて取り扱う。 なお、負のゼロと同種の理由で、正のゼロである「+0」と符号のないゼロである「0」を区別しなければならない場合もあるが、本項ではこの問題については割愛し、 「+0」と「0」を同一視する。 ==数値表現としての負のゼロ== 数値表現において符号の概念をゼロにも適用した結果として負のゼロが生じる場合がある。 例えば整数を''N''進法で表現する場合、ゼロ以外の数は、 * +(数値) * -(数値) のいずれかの形に一意に表現できる。 しかしゼロのみは * +0 * -0 の二種類の表現が可能であるため、負のゼロの問題が生じる。 この事が原因で、0のみ例外処理が必要になる場合がある。 例えば2つの数値 * A=(符号1)(数値1) * B=(符号2)(数値2) が等しいかどうかを判定するために以下のようなプログラムを書くとバグを作り込むこととなる: * if(符号1と符号2が等しく、数値1も数値2と等しい) * 「A=B」と出力 * else * 「A≠B」と出力 このプログラムにA=+0、B=-0を代入すると、本来は「A=B」を出力しなければならないはずだが、両者の符号が異なることが原因で「A≠B」を出力してしまう。 このように負のゼロは、プログラムにおいてバグの原因になってしまうので、慎重に取り扱う必要がある。 この種の問題の根本的解決としては、そもそも負のゼロが生じない数値表現を選ぶ、という方法があるが、他の問題との兼ね合いによっては、必ずしもこれが最良な解決になるとは限らない。 コンピューターでは補数を利用して負数を表現することが多いが、同じ補数でも基数の補数を利用した場合には負のゼロが生じないのに対し、減基数の補数を用いた場合には負のゼロが生じる。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「−0」の詳細全文を読む スポンサード リンク
|