MPIR的浮点类型是否不准确?

时间:2016-02-02 02:53:09

标签: c floating-point mpfr

我刚开始使用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,但这看起来非常真实。我做错了吗?

1 个答案:

答案 0 :(得分:4)

5.999999999999double。现在,double实际上可以保持值5.999999999999,但它可以保持值几乎完全相同的值5.9999999999989999110994176589883863925934 - 并且您从未注意到差异,对吧?

改为使用mpf_set_str

mpf_set_str(t2, "5.999999999999", 10);

(10是基数,在这种情况下是十进制)