MPFR舍入问题

问题描述 投票:1回答:1

我刚刚开始使用MPFR任意精度库,很快就遇到了非常奇怪的行为。使用它的主要目的是提高大参数“ trigs”的精度,这在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

math floating-point bignum mpfr
1个回答
3
投票

This appears to be the canonical answer to floating-point precision issues。它解释了为什么更多的位不能解决问题。

旧答案

See question 7 of the MPFR FAQ.无论如何,总会有一些错误,因为无论您使用多少位,许多数字都不能用二进制尾数精确地表示。请参阅相关SO问题的this answer以获取良好的解释。

© www.soinside.com 2019 - 2024. All rights reserved.