Является ли 6 десятичным числом по умолчанию с плавающей запятой в формате Python? - PullRequest
0 голосов
/ 13 октября 2019

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

"{:f}".format(1)

Но почему вывод '1.000000' вместо '1.0'?

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Документация Python говорит о форматировании с f «Отображает число как число с фиксированной точкой. Точность по умолчанию равна 6. ”

Обратите внимание, что не все реализации Python используют один и тот же формат для плавающей запятой. Как видно из документации , большинство современных машин используют арифметику с плавающей точкой IEEE-754, и почти все платформы отображают объекты Python float в базовый 64-битный двоичный формат IEEE-754, но это не гарантируется.

0 голосов
/ 13 октября 2019

Полагаю, это вывод по умолчанию, если вы не указали количество десятичных знаков. Использование формата 3.6+ f-string:

f'{1.123456789:f}'
'1.123457'

f'{1:.1f}'
'1.0'

f'{1.12345678901234567:.10f}'
'1.1234567890'

Теперь совершенно другой вопрос - какова точность числа с плавающей запятой, например

f'1.1:.20f'
'1.10000000000000008882'

, которое, по-видимому, предполагаетс плавающей запятой дает до 16 десятичной точности. Если вам нужно больше, вам нужно использовать модуль Decimal Десятичная фиксированная точка и арифметика с плавающей запятой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...