ページ 11

floatについて

Posted: 2010年10月12日(火) 10:06
by ピンキ-@ミント味
#include<stdio.h>

int main(void)

{

float f;

double d;

f=7.77777777777777777777777;

d=7.77777777777777777777777;

printf("floate: %1.18lf\n",f);

printf("double: %1.18lf\n",d);


return 0;

}


コレを実行すると
floate: 7.777777671813964844
double: 7.777777777777777679

となりました。
%1.18lfで小数点以下18ケタを表示の命令とfloateは7ケタdoubleは16ケタを
表示されることはわかります。
671813964844と679の部分の表示の意味がわかりません。
どのような処理でこんな値になったのですか?

Re:floatについて

Posted: 2010年10月12日(火) 10:24
by Blue
浮動小数点型ってどのようなものか知っていますか?
2進数で表すから、表せない値もあります。

Re:floatについて

Posted: 2010年10月12日(火) 10:38
by へろりくしょん
表現方法の問題ではなく、単純にサイズの問題だと思いますよ。

Re:floatについて

Posted: 2010年10月12日(火) 10:43
by ookami
私からも補足いたします。

http://club.pep.ne.jp/~asuzui/page23.htm
↑にもあるように、

0.5
0.25
0.125
:
:

の和で表せない数は、10進数⇔2進数の変換の時に、誤差が生じます。

Re:floatについて

Posted: 2010年10月12日(火) 10:49
by たかぎ
%1.18lfではなく、%1.18laとすれば、中で何が起きているのか分かりやすいかもしれません。