【发布时间】:2013-01-09 13:50:31
【问题描述】:
有没有办法使用 gmplib 打印没有指数的 mpf_t 数字?我宁愿不必编写一个读取指数并手动移动小数的函数,因为那样看起来有点矫枉过正。
【问题讨论】:
有没有办法使用 gmplib 打印没有指数的 mpf_t 数字?我宁愿不必编写一个读取指数并手动移动小数的函数,因为那样看起来有点矫枉过正。
【问题讨论】:
我对 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) 调整宽度以进一步调整结果。
【讨论】:
事实上,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位数字的浮点数
【讨论】: