Почему math.cos(math.pi/2) не возвращает ноль?Python

Программы на Python
Anonymous
Почему math.cos(math.pi/2) не возвращает ноль?

Сообщение Anonymous »

Я столкнулся со странным поведением math.cos() (Python 3.11.0):

Код: Выделить всё

>>> import math
>>> math.cos(math.pi)  # expected to get -1
-1.0
>>> math.cos(math.pi/2)  # expected to get 0
6.123233995736766e-17
Я подозреваю, что в этом может сыграть роль математика с плавающей запятой, но я не знаю, какую именно. А если бы это было так, я бы предположил, что Python просто проверяет, равен ли параметр math.pi/2 для начала.
Я нашел этот ответ от Джона Скита, который сказал: :

По сути, не следует ожидать, что двоичные операции с плавающей запятой будут абсолютно правильными, если ваши входные данные не могут быть выражены как точные двоичные значения - что пи/ 2 не может, поскольку это иррационально.

Но если это правда, то math.cos(math.pi) не должен Это тоже не сработает, потому что он также использует приближение math.pi. Мой вопрос: почему эта проблема возникает только при использовании math.pi/2?

Подробнее здесь: https://stackoverflow.com/questions/755 ... eturn-zero

Вернуться в «Python»