プログラム
//C言語
#include<stdio.h>
int main(void)
{
float a = 12.345;
printf("小数の表現:%f\n", a);
float b = 123456.781234;
printf("長いケタ:%f\n", b);
float c = 12.3;
float d = 4.5;
printf("微妙な誤差:%f+%f=%f\n", c, d, c + d);
float e = 10000000.0;
float f = 1.234567;
printf("情報落ち:%f+%f=%f\n", e, f, e + f);
return 0;
}
出力結果:
小数の表現:12.345000
長いケタ:123456.781250
微妙な誤差:12.300000+4.500000=16.799999
情報落ち:10000000.000000+1.234567=10000001.000000
float 型の精度(有効桁数)は2進数にして 24 (=23+1) 桁であり,10進数では約 7 桁となる.
ただし、printfの内部処理は6ケタまで精度を持たせている。
float型
float型は4バイト=32ビットのサイズを持ち,そのビットを次のように,符号,指数,仮数を表すために用いる.
指数部-127 が指数の値となる.仮数部は仮数の小数点以下を表している.すなわち,仮数は仮数部の先頭に 1. を付加したものになる.
float の表す値 = (-1)符号部 × 2指数部-127 × 1.仮数部
float 型の精度(有効桁数)は2進数にして 24 (=23+1) 桁であり,10進数では約 7 桁となる.
指数部も有限であるため, float で表すことのできる実数の絶対値は次のような範囲に限られる.
1.175494 10-38 < float の絶対値 < 3.402823 10+38
この下限値と上限値とは,ヘッダファイル float.h で FLT_MIN および FLT_MAX という名前でマクロ定義されている.
//C言語
#include <stdio.h>
#include <float.h>
int main()
{
printf("FLT_MIN = %e, FLT_MAX =%e\n", FLT_MIN, FLT_MAX);
return 0;
}
出力結果:
FLT_MIN = 1.175494e-38, FLT_MAX =3.402823e+38
コメント