是否存在比双精度"更大"的本机c ++变量类型?
float是7
double是15(当然取决于编译器)
有没有更大的本机,甚至非本机?
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++包装器.