1

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

4

2 回答 2

2

我不熟悉 gmplib,但它是否支持固定格式操纵器?

在标准 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)来进一步调整结果。

于 2013-01-09T14:12:09.193 回答
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 位数字的浮点数

于 2016-12-08T00:58:36.130 回答