打印__float128,不使用quadmath_snprintf

时间:2014-05-14 12:25:05

标签: c++ c floating-point precision floating-point-precision

在我关于Analysis of float/double precision in 32 decimal digits的问题中,有一个答案说要查看__float128

我使用它并且编译器可以找到它,但我无法打印它,因为编译器找不到标题quadmath.h

所以我的问题是:

  1. __float128是标准的,对吗?
  2. 如何打印?
  3. 不是quadmath.h标准吗?
  4. 这些答案没有帮助:

    1. Use extern C
    2. Precision in C++
    3. Printing
    4. ref也没有帮助。

      请注意,我不想使用任何非标准库。

      [编辑]

      如果这个问题有答案,即使答案是否定的,也会有用。

3 个答案:

答案 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 ++中,你当然会使用<<