BLOGTIMES
2020/10/06

double 型の変数には -0.0 が代入できる

  c 
このエントリーをはてなブックマークに追加

久しぶりに c でプログラムを書いていたら double 型の変数に -0.0 が代入できることに気づいたのでメモ。
通常はあまり使わない変な値を入れて実行してみるとこんな感じになります。

example.c

#include <stdio.h> #include <math.h> int main(void){ double d; d = -0.0; printf("%f\n", d); d = INFINITY; printf("%f\n", d); d = -INFINITY; printf("%f\n", d); d = NAN; printf("%f\n", d); return 0; }

実行結果

-0.000000 inf -inf nan

詳細は IEEE 754 で

ほとんどのプログラミング言語の実数の扱いは IEEE 754(最新版は IEEE 754-2019 - IEEE Standard for Floating-Point Arithmetic)に基づいています。
このため、内部的には符号部指数部仮数部の組み合わせで1つの値が表現されます。
したがって、よく考えたら -0.0 というのは普通に存在できるんですね。

これに対して int や long などの整数型の負値は2の補数表現なので、-0 は存在しません


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12019
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン