掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.28489

for文
投稿者---冬(2006/10/15 18:39:07)


for文の条件判定が9以下となっているのに、

10.000000と表示されます。

なぜですか?

#include<stdio.h>

int main(void)
{
    double f;
    for(f=1.0;(int)f<=9;f=f+0.1)
    printf("%f\n",f);
    

return 0;
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:for文 28490 nano 2006/10/15 19:10:53


No.28490

Re:for文
投稿者---nano(2006/10/15 19:10:53)


>なぜですか?

printfの書式文字列を例えば"%.20f"として、小数点以下の桁数を
多くしてみてください。
"%f"のときに10.000000と表示しているのは、実は10.0より
少し小さい値(9.999999.....)であることがわかるはずです。
これは、浮動小数点数の計算時に生ずる誤差が原因です。

for文の終了条件が「fの小数点以下を切り捨てた値が9以下」ですから、
結果は妥当です。


この投稿にコメントする

削除パスワード

No.28491

Re:for文
投稿者---nano(2006/10/15 19:32:44)


>for文の終了条件が

終了条件ではなくて継続条件です。失礼しました。



この投稿にコメントする

削除パスワード

No.28492

Re:for文
投稿者---冬(2006/10/15 20:10:59)


(int)を使ったからですね。
どうも、ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧