我刚开始使用MPFR任意精度库,很快就会遇到非常奇怪的行为。使用它的主要目标是提高滞后参数触发的精度,这在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 + 2.4.2 MPFR
谢谢!转换float - > string - > bigfloat解决了错误与精度无关的问题。 – Denis 2010-02-26 08:15:41