double型変数の-0.00と0.00の扱いについてです.
次のコードを実行してみると出力はZEROとなりました.
C
1double x = -0.00; 2if (x < 0) puts("negative"); 3else if (x == 0) puts("ZERO"); 4else puts("positive");
なので,ifで比較するときはxはピッタシ0と同じと考えました.
double型の変数は符号部分(1bitめ?)が0か1かで符号を扱っているので,
C
1x = -0.00; 2y = 0.00;
としたときにxとyの1bitめの符号のとこだけが異なっていて,その他は同じだと思います.
なので,printfで次のように表示すると.
C
1printf("x %.2f y %.2f\n", x, y); 2//結果 x -0.00 y 0.00
と符号も込みで出力されます.
-0.00のマイナスを除いて出力したいのですがどうすればよいでしょうか?よくある
C
1x = (x < 0) ? -x : x
みたいな絶対値を返すようなコードだと-0.00のままになってしまいます.
xには色々な実数が入っているときを考えています(-0.00も含め)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/15 01:47