странный ответ на грех и потому что число пи в питоне

Я столкнулся с очень странной проблемой. когда я хочу найти sin или cos некоторых углов, я получаю странные ответы в интерпретаторе python.

>>>from math import *
>>>sin(pi)
Out:1.2246467991473532e-16
>>>cos(pi)
Out:-1.0

Он ответил потому, что правильно, но грех был странным. в то время как пи / 2 является обратным.

>>>sin(pi/2)
Out: 1.0
cos(pi/2)
Out: 6.123233995736766e-17

Я в замешательстве!

Кто-нибудь может объяснить, что происходит?

Кстати, я использую навес и питон 2.7.9.


person Ali Tohidi    schedule 20.07.2017    source источник
comment
по крайней мере, у вас не будет проблем с делением на ноль;) извините за шутку, я думаю, причина в том, что вы должны использовать tau   -  person Kaddath    schedule 20.07.2017
comment
Для всех намерений и целей эти значения равны нулю. См. раздел Не работает ли математика с плавающей запятой?.   -  person roganjosh    schedule 20.07.2017
comment
Пожалуйста, ознакомьтесь с этим en.wikipedia.org/wiki/Propagation_of_uncertainty.   -  person AKHIL MATHEW    schedule 20.07.2017
comment
Добро пожаловать в мир арифметики конечной точности. При использовании чисел с плавающей запятой никогда не ожидайте, что вычисления будут точными (иногда это происходит случайно). В любом случае, в большинстве случаев результаты имеют гораздо лучшую точность, чем данные, которые вы предоставляете. (Кто может измерить угол с ошибкой менее 10^{-16}? Это обязательная статья: Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой.   -  person Yves Daoust    schedule 20.07.2017


Ответы (1)


Я думаю, что вывод на следующий ответит на ваш вопрос. Ваш вывод не является неправильным, это просто побочный эффект использования компьютеров для вычислений.

print "sin(pi) = %.2f\ncos(pi/2) = %.2f" % (sin(pi), cos(pi/2))
person Sam Chats    schedule 20.07.2017
comment
Это не отвечает на вопрос. Вы в основном просто говорите, что приближение с двумя десятичными знаками некоторого очень маленького значения будет равно 0,00. - person Thierry Lathuille; 20.07.2017
comment
@ThierryLathuille Точно. Я хочу, чтобы ОП понял, что он получает достаточно точный результат. - person Sam Chats; 20.07.2017