如何在 Python 中将浮点数格式化为固定宽度

新手上路,请多包涵

如何将浮点数格式化为具有以下要求的固定宽度:

  1. 如果 n < 1,则前导零
  2. 添加尾随小数零以填充固定宽度
  3. 截断超过固定宽度的十进制数字
  4. 对齐所有小数点

例如:

 % formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print formatter.format(number)

输出就像

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000

原文由 hobbes3 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 759
2 个回答
numbers = [23.23, 0.1233, 1.0, 4.223, 9887.2]

for x in numbers:
    print("{:10.4f}".format(x))

印刷

   23.2300
    0.1233
    1.0000
    4.2230
 9887.2000

花括号内的格式说明符遵循 Python 格式字符串语法。具体来说,在这种情况下,它由以下部分组成:

  • 冒号前的 空字符串 表示“将下一个提供的参数传递给 format() ”——在这种情况下, x 作为唯一的参数。
  • 冒号后的 10.4f 部分是 格式规范
  • f 表示定点符号。
  • 10 是正在打印的字段的总宽度,左边用空格填充。
  • 4 是小数点后的位数。

原文由 Sven Marnach 发布,翻译遵循 CC BY-SA 4.0 许可协议

自从回答这个问题已经有几年了, 但是从 Python 3.6 ( PEP498 ) 开始,您可以使用新的 f-strings

 numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print(f'{number:9.4f}')

印刷:

   23.2300
   0.1233
   1.0000
   4.2230
9887.2000

原文由 artomason 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题