用于在python中舍入的格式化字符串

时间:2012-03-30 07:33:03

标签: python

我想使用格式化字符串舍入整数,但必须通过参数询问。我有以下代码,其中p是要舍入的小数位数。

def fahrenheit_to_celsius(t, p):
    celsius = ((t - 32.0) * 5.0 / 9.0)

    print "%f "%(celsius)

3 个答案:

答案 0 :(得分:4)

def fahrenheit_to_celsius(t, p):
    celsius = (t - 32.) * 5. / 9.
    return "{0:.{1}f}".format(celsius, p)

print fahrenheit_to_celsius(76.2, 2) # prints "24.56"
print fahrenheit_to_celsius(0, 0) # prints "-18"

答案 1 :(得分:0)

>>> def f_to_c(t, p=0):
...     return round(((t - 32.0) * 5.0 / 9.0), p)
... 
>>> print("{}".format(f_to_c(10, 2)))
-12.22

答案 2 :(得分:0)

在格式说明符中,在.*%之间添加f'.'指定小数,'*'指定要从参数列表中选取的宽度。

def fahrenheit_to_celsius(t, p):
    celsius = ((t - 32.0) * 5.0 / 9.0)

    print "%.*f"%(p,celsius) ## pick width from argument.
    print "%.2f"%(celsius) ## always 2 decimals

来自printf手册页:

  

字段宽度

     

可选的十进制数字字符串(具有非零的第一个数字),指定最小字段宽度。如果转换后的值的字符数少于字段宽度,则会在左侧填充空格(如果已给出左侧调整标记,则填充右侧)。可以写"*""*m$"(对于某些十进​​制整数m)而不是十进制数字字符串来指定字段宽度分别在下一个参数或第m个参数中给出,必须是int类型。负字段宽度被视为'-'标志,后跟正字段宽度。在任何情况下,不存在或小的字段宽度都不会导致字段截断;如果转换结果宽于字段宽度,则字段将展开以包含转换结果。