2015-08-14 90 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"))