возвращаются разные значения с помощью функции печати - PullRequest
0 голосов
/ 07 октября 2019

Привет всем Я использую Python 2.7 32 на 64-битной ОС Windows 10 и получаю некоторые странные результаты.
При запуске следующий код

from numpy import sin, pi

for i in range(6, 10):
    x = 10**-i
    print(sin(x*pi)/x/pi)
    print(sin(x*pi)/x/pi, i)

Я получаю другие результаты, хотя этота же математика

0.999999999998
(0.99999999999835498, 6)
1.0
(0.99999999999998357, 7)
1.0
(0.99999999999999967, 8)
1.0
(1,0, 9)

Когда я импортирую функцию печати из будущего, я получаю те же результаты. Просто любопытно, почему это происходит?

Примечание. Хотя отпечатки отличаются, я получаю те же результаты, если сравнивать их.

1 Ответ

1 голос
/ 07 октября 2019

Вы печатаете поплавки с вашей первой командой и кортежи с вашей второй командой. При печати они представлены с разным уровнем точности.

Вы можете просто проверить это, указав точность самостоятельно:

from numpy import sin, pi

for i in range(6, 10):
    x = 10**-i
    print("{0:.30f}".format(sin(x*pi)/x/pi))  # print with more accuracy
    print(sin(x*pi)/x/pi, i)

Вывод:

0.999999999998354982544412905554    # more accuracy and (if rounded) same as the tuple value
(0.999999999998355, 6)
0.999999999999983568699235547683
(0.9999999999999836, 7)
0.999999999999999666933092612453
(0.9999999999999997, 8)
1.000000000000000000000000000000
(1.0, 9)

@ Бамар ответил так же в комментарии - этопросто более "видимый".

...