2012-03-30 35 views
1

我想使用格式化的字符串四捨五入整數,但它必須通過一個參數詢問。我有以下代碼,其中p是要舍入的小數位數。python中四捨五入的格式化字符串

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

    print "%f "%(celsius) 

回答

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 
+0

'「{0}」。format(round(1,2))'打印「1.0」而不是「1.00」作爲等待... – eumiro 2012-03-30 07:46:44

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" 
+2

[Here](http://docs.python.org/library /string.html#format-string-syntax)是'format'字符串方法的文檔。 – 2012-03-30 07:44:04

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類型,而不是十進制數字字符串。負字段寬度取爲'-'標誌,後跟正字段寬度。在任何情況下,不存在或小的字段寬度都會導致字段的截斷;如果轉換結果寬於字段寬度,則字段將展開以包含轉換結果。