web-dev-qa-db-ja.com

ダブルより何が大きいですか?

Doubleより「大きい」ネイティブのc ++変数型はありますか?
floatは7
doubleは15です(もちろんコンパイラによって異なります)
ネイティブ、または非ネイティブの大きなものはありますか?

28
baash05

C++にはlong doubleですが、プレーンなdoubleより正確である保証はありません。 x86プラットフォームでは、通常doubleは64ビットであり、long doubleは64ビットまたは80ビットのいずれかです(これを覚えていれば、19桁の有効数字が得られます)。

特にx86を使用していない場合は、走行距離が異なる場合があります。

37

長いdoubleは通常10バイトしか使用しませんが、アラインメントのために、構造体で実際に12または16(コンパイラとオプションによって異なります)バイトを使用する場合があります。

10バイトの長さのdoubleは、64ビットの仮数を提供します。これは、精度を失うことなく64ビット整数を浮動小数点に格納する場合に非常に便利です。

11
ysth

GNU MP を使用できます。その 浮動小数点関数 は、無制限の仮数と32ビットまたは64ビット(ネイティブのWordサイズに応じて)指数を持ちます。 C++ラッパー も付属しています。

9
CesarB

C++には、任意の精度の計算を可能にするbigfloat/bigintライブラリがいくつかあります。 Microsoft Codeplexには this ライブラリがありますが、Googlingを使用すると他のライブラリもたくさん見つかります。

3
Dana the Sane

C++は長いdoubleを持っていますが、それでもまだかなり制限されています。しばらくの間、GNUのgmpライブラリを試してください。通常の+の代わりにgmp_addを使用すると、好きなだけ大きな数を設定できます。きっとどこかにC++ラッパーがあるでしょう。

3
gilm

long doubleですが、一般的には15桁の精度です。

2
Jake

long long doubleは一部のcpusのみで使用できますが...

2
Arron Brooks

ブースト1.53以上には、多重精度があります。

http://www.boost.org/doc/libs/1_54_0/libs/multiprecision/doc/html/index.html

0
user1356386