我正在使用python中的GUI构建科学计算器应用程序。有些计算有一些我认为不是主要问题的数值误差,但它们仍然不理想
例如
输入:1
输入:cos(计算1弧度的cos)
输出:0.5403023058681398
输入:acos(计算反余弦值0.5403023058681398)
输出0.9999999999999999
这当然应该是1.0。
以.01作为初始输入,acos(cos(.01))计算为0.010000000000001442,所以我知道它不仅仅是最后一个数字被关闭,并且可能错误正在通过每次计算传播
有没有人知道更好地处理浮动操作的选项?是否有为此构建的第三方模块?
答案 0 :(得分:1)
其他答案是正确的,但在python中,您可以轻松地接近所需的输出:
> print math.acos(math.cos(1))
0.9999999999999999
> print "%g" % math.acos(math.cos(1))
1
答案 1 :(得分:0)
这是由于计算机存储浮点数的方式。您可以将浮点值四舍五入到一定数量的小数位,或者如果需要更高的精度,可以使用外部包,例如mpmath。