вместо правильного ответа 0, когда я бегу (экоса 1) в, чтобы найти арккосинус 1 Emacs, я получить ответПочему в Common Lisp, когда я запускаю функцию acos с аргументом 1, ответ неверен?
-6.125742f-17
почему это и как я могу получить правильный ответ от 0, как калькулятор Windows, говорит, что это должно быть
Я использую SBCL как мой интерпретатор Лиспа на Windows 8 и 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]
Если у вас есть вопросы по SBCL, лучше спросить в списке рассылки поддержки SBCL. –
@RainerJoswig Это не SBCL-специфический. Точность плавающей точки влияет на все языки. Пример: http://stackoverflow.com/questions/2670999/how-can-i-work-around-the-fact-that-in-c-sinm-pi-is-not-0 – finnw
@finnw: есть упомянутое конкретное условие ошибки SBCL, значение отчета об ошибке. Плюс: другие реализации CL, например SBCL на моем Mac, вычислить (acos (float 1)) до 0.0. –