【问题标题】:print gmplib's mpf_t number without exponent打印不带指数的 gmplib 的 mpf_t 数字
【发布时间】:2013-01-09 13:50:31
【问题描述】:

有没有办法使用 gmplib 打印没有指数的 mpf_t 数字?我宁愿不必编写一个读取指数并手动移动小数的函数,因为那样看起来有点矫枉过正。

【问题讨论】:

    标签: c++ printing gmp


    【解决方案1】:

    我对 gmplib 不熟悉,但它是否支持 fixed 格式化操纵器?

    在标准 C++ 中:

    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int main()
    {
       double d = 1.12345e6;
    
       cout << d << endl;
       cout << fixed << d << endl;
       return 0;
    }
    

    产生:

    $ ./test
    1.12345e+06
    1123450.000000
    

    您可以使用setprecision(n) 调整精度,使用setw(n) 调整宽度以进一步调整结果。

    【讨论】:

      【解决方案2】:

      事实上,GMPLib 提供了很好地打印 mpf_t 值的方法。见下文。

      #include <stdio.h>
      #include <gmp.h>
      
      int main(int argc, const char * argv[]) {
          mpf_t f;
          mpf_init_set_str(f, "314.15926", 10);
          gmp_printf("%.5Ff\n", f);
          return 0;
      }
      

      如果你运行脚本,控制台会输出:

      314.15926
      

      这里最重要的是GMT浮点格式标志中的5左右:%.5Ff,表示它将输出5位数字的浮点数

      【讨论】:

        猜你喜欢
        • 2015-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 1970-01-01
        • 2013-07-22
        相关资源
        最近更新 更多