Python数值错误

时间:2014-05-15 22:30:20

标签: python numerical-methods

我正在使用python中的GUI构建科学计算器应用程序。有些计算有一些我认为不是主要问题的数值误差,但它们仍然不理想

例如

输入:1

输入:cos(计算1弧度的cos)

输出:0.5403023058681398

输入:acos(计算反余弦值0.5403023058681398)

输出0.9999999999999999

这当然应该是1.0。

以.01作为初始输入,acos(cos(.01))计算为0.010000000000001442,所以我知道它不仅仅是最后一个数字被关闭,并且可能错误正在通过每次计算传播

有没有人知道更好地处理浮动操作的选项?是否有为此构建的第三方模块?

2 个答案:

答案 0 :(得分:1)

其他答案是正确的,但在python中,您可以轻松地接近所需的输出:

> print math.acos(math.cos(1))
0.9999999999999999
> print "%g" % math.acos(math.cos(1))
1

答案 1 :(得分:0)

这是由于计算机存储浮点数的方式。您可以将浮点值四舍五入到一定数量的小数位,或者如果需要更高的精度,可以使用外部包,例如mpmath