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

在Python中使用0填充格式化浮点数字,python,floating-point,Python,Floating Point,64位Ubuntu 12.04上的Python版本2.7.3 我有一个介于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 t

64位Ubuntu 12.04上的Python版本2.7.3

我有一个介于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之间所有数字的解决方案吗?

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

有关格式化数字的背景信息,请参阅:


帽子提示:

如果您按以下方式计算高度Dec,则原始解决方案有效:

heightDec = int(round((height - heightWhole)*100, 0))

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

Simple。优雅的很好的解决方案。
heightDec = int(round((height - heightWhole)*100, 0))