c - MPIR 的浮点类型不准确吗?

标签 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,但这似乎非常不准确。我做错了什么吗?

最佳答案

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/

相关文章:

c - 没有默认大小写的 Objective-C 枚举 "exhaustive"开关的行为

c++ - MSYS2 MinGW64 在 Windows 上构建 GMP/MPFR 作为静态库,并将它们链接到用 CL 编译的 MSVC 项目中

c++ - 什么是精度?

c - MPFR 未正确复制数据

objective-c - 32 位大端 float 据到 CGImage

python - 具有浮点值的 WxSlider?

c - 什么是 void (*pfunc[3])()?

C 代码不会在 mac 终端中编译。

c - 如何从 execl 向 scanf 传递参数?

c++ - IEEE 754 float 学运算