2014-10-29 20 views
0

我想打印數字的精度爲2位之前的點和3之後。python在逗號前面打印2個數字

例子:

1232.352232 
9.1 

將顯示:

32.352 
09.100 

我知道

print "%.3f" % 32.352 

會告訴我小數點後3位,但如何讓0點前2位如果這少於2位數字?

+0

如果我們談論精度,第一個肯定是'1200,352'? – 2014-10-29 19:34:56

+1

Python在浮點數中使用*十進制點*,而不是逗號。 – 2014-10-29 19:35:59

+1

*沒有'lf'格式*。你是不是隻是'f'? – 2014-10-29 19:37:36

回答

2

您可以指定輸出的總寬度;如果包括前導0,則數量將用零填充到最小寬度匹配:

"%06.3f" % float_number 

演示:

>>> for float_number in (1232.352232, 9.1): 
...  print "%06.3f" % float_number 
... 
1232.352 
09.100 

注意,號碼是最小寬度!如果您需要截斷浮點數本身,你將需要使用切片:

("%06.3f" % float_number)[-6:] 

這將截斷字符串從一開始刪除字符,如果超過6:

>>> for float_number in (1232.352232, 9.1): 
...  print ("%06.3f" % float_number)[-6:] 
... 
32.352 
09.100 
+0

我試圖把「%02.3f」%1.1234,它不返回我01,123 – 2014-10-29 19:47:18

+0

@SebastianB:這是因爲第一個數字必須設置爲* total *寬度。包含小數! '「%06.3f」%1.1234'的作品。 – 2014-10-29 19:48:57

+0

哇,謝謝它的工作!這真的幫助我理解它:) +1完全當之無愧。 :) – 2014-10-29 19:57:11

0
x = "9,1" 

def displayNum(num): 
    f,s = num.strip().split(',') 
    f = '0'*(2-len(f))+f if len(f) < 2 else f[-2:] 
    s = s + '0'*(3-len(s)) if len(s) < 3 else s[:3] 
    return ",".join([f,s]) 

print(displayNum(x)) 

09,100 
相關問題