2

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

-6.125742f-17

为什么会这样,我如何得到 0 的正确答案,就像 Windows Calculator 所说的那样

我在 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]
4

1 回答 1

10

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

您需要阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic并意识到所有浮点计算都是近似的,并且您得到的近似值“足够好”。

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

于 2013-07-02T15:01:20.530 回答