При работе с точностью поплавка я наткнулся на странный факт. Почему python печатает только целую часть при форматировании с "%.f"
. Я желаю знать механизм позади этогоТочность поплавка Python без целочисленной точности после десятичной точки
>>> a = float(2.12345)
>>> a
2.12345
>>> print "%.2f" % a
2.12
>>> print "%.1f" % a
2.1
>>> print "%f" % a
2.123450
>>> print "%.f" % a
2 #why?
Заранее спасибо за объяснение :)
Поскольку '«% .f»' так же, как '» % .0f "'? – Selcuk
По той же причине, что '1.0' является таким же, как' 1.', вероятно. – TigerhawkT3
Это, по-видимому, неопределенное поведение. Необязательная точность [указана как «.» (Точка), за которой следует точность] (https://docs.python.org/2/library/stdtypes.HTML # строка форматирования-операции). В документации по мини-языку спецификации формата (https://docs.python.org/2/library/string.html#format-specification-mini-language) аналогично требуется аргумент для точности. Поскольку 'int()' возвращает 0, он кажется разумным по умолчанию, но неопределенное поведение означает именно это. – Chris