web-dev-qa-db-ja.com

DOUBLE_MAXを取得するにはどうすればよいですか?

私の知る限り、Cはいくつかのデータ型のみをサポートしています。

int, float, double, char, void enum.

上位10桁に達する可能性のある数値を保存する必要があります。から10桁の低い数字を取得しているため

INT_MAX

、ダブルが必要だと思います。

<limits.h>にはDOUBLE_MAXがありません。 DBL_MAXインターネット上で、これはLEGACYであり、C++でもあると述べています。必要なのは二重ですか? DOUBLE_MAXがないのはなぜですか?

52
P.Brian.Mackey

DBL_MAX<float.h><limits.h> UNIXでは、「(LEGACY)」とマークされます。

(おそらく「LEGACY」表記法を見つけた場所であるため、unixタグがなくても、unix標準にリンクしますが、float.hに表示されるものの多くは、C89に戻るC標準にもあります)

68
Random832

_<limits.h>_または_<climits>_でinteger制限を取得します。浮動小数点の特性は、Cの_<float.h>_で定義されています。C++では、通常、std::numeric_limits<double>::max()(_#include <limits>_)が推奨されます。

元の質問に関して、longよりも大きな整数型が必要な場合は、おそらく_long long_を検討する必要があります。これはC++ 98やC++ 03には公式には含まれていませんが、C99およびC++ 11の一部であるため、合理的に最新のすべてのコンパイラーがサポートしています。

24
Jerry Coffin

標準のfloat.hインクルードファイルにあります。 DBL_MAX

6
Sodved

doubleを使用して大きな整数を格納するのは疑わしいです。 doubleに確実に格納できる最大の整数は、DBL_MAXよりはるかに小さいです。 long longを使用する必要があります。それでも十分でない場合は、独自の任意精度のコードまたは既存のライブラリが必要です。

6
R..

float.hヘッダーを探しています。

1
Femaref

INT_MAXlimits.h の単なる定義です。整数値と浮動小数点値のどちらを保存する必要があるかを明確にしません。整数で、64ビットコンパイラを使用する場合は、LONG(32ビットの場合はLLONG)を使用します。

1
entropo