このページの解説は C99 をベースとしています。
以下は目次です。
ある浮動小数点型で表現できる最小値や最大値を使いたいとします。
たとえば、double型の変数を定義するとき、表現できる最小値や最大値で初期化したい場合、どのように書けるでしょうか。
double min = ???; // double型の最小値
double max = ???; // double型の最大値
浮動小数点型の最大値を定義したマクロが、標準ライブラリに用意されていますから、それを使います。
これらのマクロは float.h で定義されています。
すべてではありませんが、代表的なものを以下に挙げます。
型 | 最大値マクロ |
---|---|
float | FLT_MAX |
double | DBL_MAX |
long double | LDBL_MAX |
最小値を定義したマクロは存在しません。代わりに、最大値マクロの置換結果に「-」を付加することで最小値を得ます。しかし、FLT_MIN、DBL_MIN、LDBL_MIN という名前のマクロは、別のことを意味するマクロとして存在していることに注意が必要です。
FLT_MIN、DBL_MIN、LDBL_MIN は、それぞれの浮動小数点型で、正確に表現することができる最小の “正の値” を意味しています。これらのマクロは、丸められてしまうことなく、正確に表現できる最小の値を調べるためにあります(「丸め」については第20章参照)
#include <float.h>
#include <stdio.h>
int main(void)
{
float f_min = -FLT_MAX;
float f_max = FLT_MAX;
double d_min = -DBL_MAX;
double d_max = DBL_MAX;
long double ld_min = -LDBL_MAX;
long double ld_max = LDBL_MAX;
("%e %e\n", f_min, f_max);
printf("%e %e\n", d_min, d_max);
printf("%Le %Le\n", ld_min, ld_max);
printf}
実行結果:
-3.402823e+38 3.402823e+38
-1.797693e+308 1.797693e+308
-1.797693e+308 1.797693e+308
return 0;
を削除(C言語編全体でのコードの統一)
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |