在Python中使用0填充格式化浮点数

5

Python,版本2.7.3在64位Ubuntu 12.04上

我有一个浮点数,介于0和99.99之间。 我需要将它以以下格式打印为字符串:

WW_DD

其中WW是整数位,DD是舍入后的小数点后2位。 该字符串需要前后用0填充,以便始终具有相同的格式。

一些例子:

0.1    -->  00_10
1.278  -->  01_28
59.0   -->  59_00

我完成了以下操作:
def getFormattedHeight(height):

    #Returns the string as:  XX_XX   For example:  01_25
    heightWhole = math.trunc( round(height, 2) )
    heightDec = math.trunc( (round(height - heightWhole, 2))*100 )
    return "{:0>2d}".format(heightWhole) + "_" + "{:0>2d}".format(heightDec)

这个方法在大多数情况下都能正常工作,但是对于0.29这个数字,格式化后会变成00_28。

有没有人能找到一种适用于0到99.99之间所有数字的解决方案呢?

2个回答

8

使用填充零格式化浮点数:

numbers = [0.0, 0.1, 0.29, 1.278, 59.0, 99.9]
for x in numbers:
    print("{:05.2f}".format(x).replace(".","_"))

这将打印:

00_00
00_10
00_29
01_28
59_00
99_90
:05表示使用五位零填充,.2f表示在小数点后强制显示两位数字。有关格式化数字的背景,请参见:https://pyformat.info/#number
致谢:如何在Python中将浮点数格式化为固定宽度

简单。优雅。好的解决方案。 - Madeleine P. Vincent

1
您的原始解决方案可以在按照以下方式计算heightDec时起作用:
heightDec = int(round((height - heightWhole)*100, 0))

先乘以100,然后四舍五入并转换为整数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接