我刚开始使用 MPIR,我正在执行这段代码:
mpf_t t2;
mpf_init2(t2, 10000);
mpf_set_d(t2, 5.999999999999);
gmp_printf("fixed point mpf %.40Ff", t2);
输出是:
fixed point mpf 5.9999999999989999110994176589883863925934
虽然我已将精度设置为 10000,但这似乎非常不准确。我做错了什么吗?
最佳答案
5.999999999999
是一个 double
。现在,double
实际上不能保存值 5.999999999999,但它可以保存值 5.9999999999989999110994176589883863925934,这几乎完全相同 - 您永远不会注意到差异,对吧?
改用mpf_set_str
:
mpf_set_str(t2, "5.999999999999", 10);
(10 是基数,在本例中是十进制)
关于c - MPIR 的浮点类型不准确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144224/