ページ 11

入力した値と異なる値がでてくる

Posted: 2014年8月11日(月) 12:04
by ジェリナゲ
#include <stdio.h>

int main(void){
float no;
printf("実数を入力してください :"); scanf("%f",&no);
printf("あなたは%fと入力しましたね\n",no);

return(0);

}

このプログラムで4.5などはそのまま4.500000と表示されるのですが、57.3などになると、57.299999など異なる値がでてくるのですがなぜでしょうか。

Re: 入力した値と異なる値がでてくる

Posted: 2014年8月11日(月) 13:00
by softya(ソフト屋)
10進数ではない2進数の浮動小数点は10進数として表示しようとすると10進数ではありえない誤差を生じます。
今回のはその誤差です。
「日経PC21 / 演算誤差の正体 - IEEE 754 浮動小数点数の仕組み」
http://pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml

Re: 入力した値と異なる値がでてくる

Posted: 2014年8月11日(月) 13:23
by ジェリナゲ
わかりました。ありがとうございます!

Re: 入力した値と異なる値がでてくる

Posted: 2014年8月11日(月) 13:29
by みけCAT
解決でしたら、解決チェックをお願いします。

Re: 入力した値と異なる値がでてくる

Posted: 2014年8月11日(月) 13:59
by ジェリナゲ
ありがとうございます