Python f-string неожиданные результаты для чисел с плавающей запятой

#python #if-statement #formatting #f-string

#python #if-statement #форматирование #f-строка

Вопрос:

Я пытаюсь отформатировать числа с плавающей запятой в обозначении с фиксированной запятой: x.xxx, три цифры после десятичной точки, независимо от значения числа. Я получаю удивительные результаты. Первое, в частности, предполагает, что оно дает мне три значащих места, а не три цифры после десятичной запятой. Как мне сказать ему, чего я действительно хочу?

 >>> print(f"{.0987:5.03}")  
0.0987
*expected: 0.099*
>>> print(f"{0.0:05.03}") 
000.0
*expected: 0.000*
>>> print(f"{0.0:5.3}")   
  0.0
 

Ответ №1:

 # added "3f" to specify decimals places

print(f"{.0987:5.3f}")
#expected: 0.099*
print(f"{0.9687:05.3f}")
#expected: 0.000*
print(f"{0.0:5.3f}")