打印gmplib的mpf_t数字,不带指数

时间:2013-01-09 13:50:31

标签: c++ printing gmp

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

2 个答案:

答案 0 :(得分:2)

我不熟悉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)的宽度来进一步调整结果。

答案 1 :(得分:1)

实际上,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位数的浮点数