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

Mad*_*ent 4 python floating-point

Python,64 位 Ubuntu 12.04 上的 2.7.3 版

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

WW_DD

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

一些例子:

0.1    -->  00_10
1.278  -->  01_28
59.0   -->  59_00
Run Code Online (Sandbox Code Playgroud)

我做了以下事情:

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)
Run Code Online (Sandbox Code Playgroud)

除了格式为 00_28 的数字 0.29 之外,它运行良好。

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

小智 6

试试这个(在 Python 2.7.10 中测试):

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

有关格式化数字的背景,请参阅:https : //pyformat.info/#number

帽子提示:如何在 Python 中将浮点数格式化为固定宽度