为什么在Common Lisp中,当我运行参数为1的函数"acos"时,答案是错误的?



当我在中运行(acos 1)时,为了找到1个emacs的ArcCosine,我得到了答案

-6.125742f-17

为什么是这样,我如何得到0的正确答案,就像Windows计算器说它应该是一样

我在Windows8上使用SBCL作为Lisp解释器,SBCL是32-BIT

当我运行时:

(acos (rational 1))

我得到了相同的答案,当我运行时

(acos (float 1))

我收到这个错误

The value -6.1257422745431e-17
is not of type
  (DOUBLE-FLOAT 0.0 3.141592653589793).
   [Condition of type TYPE-ERROR]

sin(M_PI)不是0的公认答案也适用于此处:

你需要阅读每一位计算机科学家应该知道的关于浮点运算的知识,并意识到所有的浮点计算都是近似的,你得到的近似值"足够好"。

对于SBCL错误,您应该向SBCL维护人员报告。

最新更新