Doubleより「大きい」ネイティブのc ++変数型はありますか?
floatは7
doubleは15です(もちろんコンパイラによって異なります)
ネイティブ、または非ネイティブの大きなものはありますか?
C++にはlong double
ですが、プレーンなdouble
より正確である保証はありません。 x86プラットフォームでは、通常double
は64ビットであり、long double
は64ビットまたは80ビットのいずれかです(これを覚えていれば、19桁の有効数字が得られます)。
特にx86を使用していない場合は、走行距離が異なる場合があります。
長いdoubleは通常10バイトしか使用しませんが、アラインメントのために、構造体で実際に12または16(コンパイラとオプションによって異なります)バイトを使用する場合があります。
10バイトの長さのdoubleは、64ビットの仮数を提供します。これは、精度を失うことなく64ビット整数を浮動小数点に格納する場合に非常に便利です。
C++には、任意の精度の計算を可能にするbigfloat/bigintライブラリがいくつかあります。 Microsoft Codeplexには this ライブラリがありますが、Googlingを使用すると他のライブラリもたくさん見つかります。
C++は長いdoubleを持っていますが、それでもまだかなり制限されています。しばらくの間、GNUのgmpライブラリを試してください。通常の+の代わりにgmp_addを使用すると、好きなだけ大きな数を設定できます。きっとどこかにC++ラッパーがあるでしょう。
long doubleですが、一般的には15桁の精度です。
long long doubleは一部のcpusのみで使用できますが...
ブースト1.53以上には、多重精度があります。
http://www.boost.org/doc/libs/1_54_0/libs/multiprecision/doc/html/index.html