#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の部分の表示の意味がわかりません。
どのような処理でこんな値になったのですか?
floatについて
Re:floatについて
私からも補足いたします。
http://club.pep.ne.jp/~asuzui/page23.htm
↑にもあるように、
0.5
0.25
0.125
:
:
の和で表せない数は、10進数⇔2進数の変換の時に、誤差が生じます。
http://club.pep.ne.jp/~asuzui/page23.htm
↑にもあるように、
0.5
0.25
0.125
:
:
の和で表せない数は、10進数⇔2進数の変換の時に、誤差が生じます。