是否存在比双倍“更大”的本机c ++变量类型?
浮动是7
double是15(当然取决于编译器)
有没有更大的本土,甚至非原生的?
答案 0 :(得分:36)
C ++有long double
,但不能保证它比普通double
更精确。在x86平台上,通常double
是64位,long double
是64位或80位(如果我没记错的话,它会给你19个有效数字)。
您的里程可能会有所不同,特别是如果您不在x86上。
答案 1 :(得分:10)
long double通常只使用10个字节,但由于对齐实际上可能占用结构中的12或16个(取决于编译器和选项)字节。
10字节长的double提供64位尾数;当你想在浮点存储64位整数而不会损失精度时,这非常方便。
答案 2 :(得分:9)
您可以使用GNU MP。它的floating-point functions具有无限的尾数和32位或64位(取决于本机字大小)指数。它还附带C++ wrapper。
答案 3 :(得分:3)
对于C ++,还有一些各种bigfloat / bigint库允许任意精度数学。 Microsoft Codeplex上有this库,但谷歌搜索会找到很多其他的库。
答案 4 :(得分:3)
C ++已经翻了一番,但它仍然非常有限。好好玩的时候试试GNU的gmp库。您可以根据需要设置大小的数字,当您使用gmp_add而不是普通的+时,它非常有趣且非常有趣。我确定某处有一个C ++包装器。
答案 5 :(得分:2)
长一倍,但它通常仍然是15个精度位置。
答案 6 :(得分:2)
长长的双倍只有一些cpus允许你使用它...
答案 7 :(得分:0)
Boost 1.53或更高版本具有多精度。
http://www.boost.org/doc/libs/1_54_0/libs/multiprecision/doc/html/index.html