0.0 / -1.0 = -0.0

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
taiki_okano
記事: 5
登録日時: 3年前

0.0 / -1.0 = -0.0

#1

投稿記事 by taiki_okano » 3年前

このコードを実行してみてください。出力が-0.00000みたいになると思います。
なぜでしょうか?

コード:

#include <cstdio>

int main(){
    printf("%f\n", 0.0 / -1.0);
    return 0;
}

たいちう
記事: 418
登録日時: 8年前

Re: 0.0 / -1.0 = -0.0

#2

投稿記事 by たいちう » 3年前

お使いの処理系が書かれていませんが、たぶん仕様です。

https://ja.wikipedia.org/wiki/IEEE_754

「ゼロは仮数が0の有限数である。
符号が別に定義されているので、符号付の2種類のゼロ +0 と-0 が存在する。」

taiki_okano
記事: 5
登録日時: 3年前

Re: 0.0 / -1.0 = -0.0

#3

投稿記事 by taiki_okano » 3年前

なるほど、だから、intでは-0とは表示されないわけですね。謎が解けました。ありがとうございます。

アバター
みけCAT
記事: 6149
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: 0.0 / -1.0 = -0.0

#4

投稿記事 by みけCAT » 3年前

taiki_okano さんが書きました:intでは-0とは表示されないわけですね。
intでも-0 (negative zero)があっていいことになっています。
まあ、普通(2の補数が使われる場合)は整数の-0は無いですけど…
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る