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

2 sbcl common-lisp

当我运行(acos 1)时,找到1个emacs的ArcCosine,而不是0的正确答案,我得到了答案

-6.125742f-17

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

我在Windows 8上使用SBCL作为我的Lisp解释器,SBCL是32位

当我跑:

(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]
Run Code Online (Sandbox Code Playgroud)

sds*_*sds 10

的接受答案(M_PI)不是0也适用于此:

你需要阅读每个计算机科学家应该知道的关于浮点算术的内容,并且要意识到所有浮点计算都是近似的,你得到的近似值"足够好".

至于SBCL错误,您应该将其报告给SBCL维护者.

  • user2368426:如果答案对你有帮助,你应该接受它.您已经提出了13个问题,收到了许多问题的答案而未被接受.给予应有的信用 (3认同)