double よりも「大きい」ネイティブの c++ 変数型はありますか?
float は 7
double は 15 (もちろんコンパイラによって異なります)
ネイティブまたは非ネイティブでさえあるより大きなものはありますか?
8 に答える
C++ にはlong double
がありますが、プレーンよりも正確であるという保証はありませんdouble
。x86 プラットフォームでは、通常double
は 64 ビットであり、64 ビットlong double
または 80 ビットのいずれかです (私の記憶が正しければ、有効数字は 19 桁になります)。
特にx86を使用していない場合は、マイレージが異なる場合があります。
通常、long double は 10 バイトしか使用しませんが、アラインメントのために、実際には (コンパイラとオプションに応じて) 構造体で 12 または 16 バイトを使用する場合があります。
10 バイトの長さの double は、64 ビットの仮数を提供します。これは、精度を落とさずに 64 ビット整数を浮動小数点に格納したい場合に非常に便利です。
GNU MPを使用できます。その浮動小数点関数には、無制限の仮数と 32 ビットまたは 64 ビット (ネイティブのワード サイズによる) の指数があります。また、 C++ ラッパーも付属しています。
C ++には長いdoubleがありますが、それでもかなり制限されています。良い時間のためにGNUのgmpライブラリを試してみてください。好きなだけ大きな数字を設定できます。通常の+の代わりにgmp_addを使用すると、非常に楽しく、ハックっぽくなります。どこかにC++ラッパーがあると確信しています。
任意精度の計算を可能にする C++ 用のさまざまな bigfloat/bigint ライブラリもいくつかあります。このライブラリは Microsoft Codeplex にありますが、Google で調べれば他にもたくさん見つかります。
long long double 一部のCPUのみが使用できます...
long double ですが、通常は 15 桁の精度でもあります。