比double更大的数据类型是什么?

35

是否有一种原生的C++变量类型比double "更大"?
float是7
double是15(当然这取决于编译器)
是否有任何更大的本地或非本地类型?


1
我通常认为float是4,double是8,但你指的是近似的十进制数字数量,而我指的是使用的字节数量。 - Jonathan Leffler
21
三倍的收获!(笑话打击声) - Thanatos
8个回答

44

C++有long double类型,但不能保证它比普通的double类型更精确。在x86平台上,通常double类型占64位,而long double类型则为64位或80位(如果我没记错的话,这将给你提供19位有效数字)。

你的结果可能有所不同,特别是如果你不在x86平台上。


13

一个长双精度浮点数通常只使用10个字节,但由于对齐而可能在结构体中占用12或16个字节(取决于编译器和选项)。

这个10字节的长双精度浮点数提供了64位的尾数;当您想要存储64位整数到浮点数中时,这非常方便,不会失去精度。


10

3

在C++中,还有一些各种各样的bigfloat/bigint库可以实现任意精度计算。例如,Microsoft Codeplex上有这个库,但是通过Google搜索也可以找到其他很多库。


3

C++有long double,但仍然相当有限。如果要获得更好的精度,请尝试使用GNU的gmp库。您可以设置任意大小的数字,并且在使用gmp_add而不是普通的+时很有趣和hackish。我确定有一个C++包装器。


2

long long double只有一些CPU支持使用它...


2

long double通常具有15位有效数字的精度。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接