私の知る限り、Cはいくつかのデータ型のみをサポートしています。
int, float, double, char, void enum.
上位10桁に達する可能性のある数値を保存する必要があります。から10桁の低い数字を取得しているため
INT_MAX
、ダブルが必要だと思います。
<limits.h>
にはDOUBLE_MAXがありません。 DBL_MAX
インターネット上で、これはLEGACYであり、C++でもあると述べています。必要なのは二重ですか? DOUBLE_MAXがないのはなぜですか?
DBL_MAX
は <float.h>
。 <limits.h>
UNIXでは、「(LEGACY)」とマークされます。
(おそらく「LEGACY」表記法を見つけた場所であるため、unixタグがなくても、unix標準にリンクしますが、float.hに表示されるものの多くは、C89に戻るC標準にもあります)
_<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の一部であるため、合理的に最新のすべてのコンパイラーがサポートしています。
標準のfloat.hインクルードファイルにあります。 DBL_MAX
double
を使用して大きな整数を格納するのは疑わしいです。 double
に確実に格納できる最大の整数は、DBL_MAX
よりはるかに小さいです。 long long
を使用する必要があります。それでも十分でない場合は、独自の任意精度のコードまたは既存のライブラリが必要です。
float.h
ヘッダーを探しています。
INT_MAX
は limits.h の単なる定義です。整数値と浮動小数点値のどちらを保存する必要があるかを明確にしません。整数で、64ビットコンパイラを使用する場合は、LONG
(32ビットの場合はLLONG
)を使用します。