2015-08-14 41 views
1

我要尋找一個共同的格式設置公式,在這裏我不鬆動的精度,但在另一方面,我有如何將浮點數格式設置爲整數?

4.00 => "4" 
1.23 => "1.23" 

我已經試過這

print "%.2f" % numvar 

但對於沒有小數點,如果沒有必要的4.00我得到4.00

這種格式應在帕拉姆作爲參數傳遞給其他函數傳遞(見float_formathttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html),所以我並不需要一些別的,如果解決方案。

+0

嘗試使用''%g''。它以科學記數法顯示了一些數字,但也許它適用於您。 – Cyphase

+0

謝謝,請把它寫成答案。有用。 – Meloun

回答

1

使用%g格式化代碼。

>>> print '%g' % 3 
3 
>>> print '%g' % 3.1 
3.1 
>>> print '%g' % 3.14 
3.14 
>>> print '%g' % 3.14159 
3.14159 
>>> print '%g' % 3.1415926 
3.14159 
>>> print '%.6g' % 3.1415926 
3.14159 
>>> print '%.8g' % 3.1415926 
3.1415926 
>>> print '%.10g' % 3.1415926 
3.1415926 
>>> 
0

你可以使用正則表達式:

import re 

def form(f, prec, spec): 
    return re.sub("\.0+$", "", "{:.{prec}{spec}}".format(f, prec=prec, spec=spec)) 

輸出:

In [2]: form(1.23, 2, "f") 
Out[2]: '1.23' 
In [3]: form(4.00, 2, "f") 
Out[3]: '4'  
In [4]: form(1.2302, 4, "f") 
Out[4]: '1.2302'  
In [5]: form(1.0000, 4, "f") 
Out[5]: '1' 

或者,如果你確定有1.10變爲1.1,你可以只rstrip:

print("{:.2f}".format(f).rstrip(".0"))