1

我刚刚开始使用 MPFR 任意精度库,很快就会遇到非常奇怪的行为。使用它的主要目标是提高大参数“触发”的精度,这在 MPFR 中非常有效。

但后来我决定检查简单的数学,这令人难以置信——即使在具有严格答案的简单示例中也存在舍入错误,并且不依赖于使用的精度。

即使在像 1.1 * 1 这样的示例中,结果也是 1.10000000000000008881784...而且这个结果以疯狂的 2000 位精度(正常双精度为 53)给出!

可能是我的系统问题,但在线MPFR也存在类似问题。您可以在线尝试这样的示例:http: //ex-cs.sist.ac.jp/~tkouya/try_mpfr.html

1 * 1.1 @ 64 位 = 1.10000000000000000002

但是在线版本会随着精度的提高而进一步移动错误,但在我的安装中 - 没有。

我的系统:Ubuntu 9.10 + gmp 5.0.0.1 + mpfr 2.4.2

4

1 回答 1

3

这似乎是浮点精度问题的规范答案。它包括解释为什么更多位不能解决问题。

旧答案

请参阅 MPFR 常见问题解答的问题 7。 无论如何,总会有一些错误,因为无论您使用多少位,许多数字都不能用二进制尾数精确表示。请参阅this answer to a related SO question以获得很好的解释。

于 2010-02-26T07:56:10.620 回答