当我运行 (acos 1) 来查找 1 emacs 的反余弦时,我得到了答案,而不是正确答案 0
-6.125742f-17
为什么会这样以及如何得到 0 的正确答案,就像 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]
接受的答案sin(M_PI) 不为 0 https://stackoverflow.com/questions/2670999/how-can-i-work-around-the-fact-that-in-c-sinm-pi-is-not-0也适用于此:
你需要阅读每个计算机科学家都应该了解的浮点运算知识 http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html并意识到所有浮点计算都是近似的,并且您得到的近似值“足够好”。
至于SBCL
错误,你应该向 SBCL 维护者报告 http://www.sbcl.org/manual/Reporting-Bugs.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)