floatについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ピンキ-@ミント味

floatについて

#1

投稿記事 by ピンキ-@ミント味 » 15年前

#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の部分の表示の意味がわかりません。
どのような処理でこんな値になったのですか?

Blue

Re:floatについて

#2

投稿記事 by Blue » 15年前

浮動小数点型ってどのようなものか知っていますか?
2進数で表すから、表せない値もあります。

へろりくしょん

Re:floatについて

#3

投稿記事 by へろりくしょん » 15年前

表現方法の問題ではなく、単純にサイズの問題だと思いますよ。

ookami

Re:floatについて

#4

投稿記事 by ookami » 15年前

私からも補足いたします。

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

0.5
0.25
0.125
:
:

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

たかぎ

Re:floatについて

#5

投稿記事 by たかぎ » 15年前

%1.18lfではなく、%1.18laとすれば、中で何が起きているのか分かりやすいかもしれません。

閉鎖

“C言語何でも質問掲示板” へ戻る