2016-06-15 88 views
0

我總是想用小數點分隔最後兩位數字。 (點)L-如何用Python中的點分隔最後兩位數字

print("{:.2f}".format(300)); 

輸出:

300.00 

預期輸出:

3.00 

接着

print("{:.2f}".format(333333300)); 

輸出:

333333300.00 

預期輸出:

3333333.00 

我怎樣才能改變我的代碼,使我得到預期的輸出呢?

+3

你爲什麼會認爲Python格式化300 3.00?他們是不同的數字。格式只能改變數字的*表示*,而不能改變它的值。 – SiHa

+0

@Mounarajan這就是它想要的語言。你正在賦予的精度工作在浮點數上,即300.34546,那麼2位數的精度將打印300.34,如果你給它一個int,它將增加兩個零像300.00 – wind85

+0

數字除以100首先? – Ben

回答

2

300.00是編號300的表示。 3.00是編號3的表示。這是兩個不同的值。 Python沒有辦法將300表示爲3

假設你真的想打印3.00(這對於幾乎每個人身邊指3,不300),那麼你應該100劃分300

print("{:.2f}".format(300/100.0)) 
+0

如果我使用此打印(「{:。2f}」。格式(2990/100))我得到這個輸出29.00,但預計是29.90 – Mounarajan

+0

正確。你正在使用Python 2,300/100被解釋爲整數除法。你應該除以100.0來強制劃分。答案已更新。 –

0

使用您實際要輸出的數值,即不要在字符串表示中添加所需的'0'。

print("{:.2f}".format(3)) 

它是字符串格式化它確實爲你加「0」時,它會創建數量值的字符串表示,根據指定的格式化字符串。

+0

如果我使用此打印(「{:。2f}」。格式(2990)),我得到這個輸出2990.00 ,但預計是29.90 – Mounarajan

0
def f(n): 
    a = divmod(n,100) 
    if a[1] < 10: 
     print("{}.0{}".format(a[0],a[1])) 
    else: 
     print("{}.{}".format(a[0],a[1])) 
+1

你的代碼的解釋會提高你的文章的質量。 –

+1

divmod(a,b)。使用兩個(非複數)數字作爲參數,並在使用長除法時返回由它們的商和餘數組成的一對數。結果與(a // b,a%b) 。元組a [0]得到一個// b,一個[1]得到一個%b。如果[1] <10,比如3001,3009,a [1]將是1和9,所以格式化時,它應該加上0 –

0

在Python 2.6:

def myPrint(x): 
    print("{0:.2f}".format(x/100.00)); 

myPrint(2990); 

29.90