考虑下面的代码:如何精确扩展mpreal的精度?
#include <iostream>
#include <mpreal.h>
using namespace std;
using mpfr::mpreal;
mpreal x("1.001",64);
mpreal y("1.0",64);
y*=x;
cout<<y<<endl; //1
y.set_prec(128);
cout<<y<<endl; //2
输出是
1.001
1.00100000000000000002081668171172168513
我希望所述第二输出是一样的东西
1.00100000000000000000000000000000000000
事实上,我已经学会了一个可以替代
y.set_prec(128);
到
y=mpreal(y.toString(),128);
但这种转换是耗时。
有没有更好/更快的方法?
谢谢!
当您执行'mpreal x(“1.001”,64);'时,您已经将精度丢弃了。在事实发生后你无法取回。 – user2357112