在我关于Analysis of float/double precision in 32 decimal digits的问题中,有一个答案说要查看__float128
。
我使用它并且编译器可以找到它,但我无法打印它,因为编译器找不到标题quadmath.h
。
所以我的问题是:
__float128
是标准的,对吗?quadmath.h
标准吗?这些答案没有帮助:
extern C
ref也没有帮助。
请注意,我不想使用任何非标准库。
[编辑]
如果这个问题有答案,即使答案是否定的,也会有用。
答案 0 :(得分:1)
在GNU-Fortran中工作!它允许以不同的精度运行相同的程序:单(32位),双(64位),扩展(80位)和四(128位)。您不必对程序进行任何更改,只需为所有浮点写“实数”即可。浮点的大小由编译器选项-freal-4-real-8,-freal-4-real-10和-freal-4-real-16设置。
答案 1 :(得分:1)
使用boost库对我来说是最佳答案:
#include <boost/multiprecision/float128.hpp>
#include <boost/math/special_functions/gamma.hpp>
using namespace boost::multiprecision;
float128 su1= 0.33333333333333333q;
cout << "su1=" << su1 << endl;
记住要链接此库:
-lquadmath
答案 2 :(得分:0)
不,它不是标准的 - 既不是类型也不是标题。这就是为什么类型有双下划线(保留名称)的原因。显然,quadmath.h提供了quadmath_snprintf
方法。在C ++中,你当然会使用<<
。