2012-04-19 62 views
6

我想在浮动千位分隔符。我在做什么是:千位分隔符格式字符串与浮游

>>> import locale 
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 
'en_US.UTF-8' 
>>> print '{0:n}'.format(123456.0) 
123,456 

当整数部分有7位以上不工作:

>>> print '{0:n}'.format(1234567.0) 
1.23457e+06 

,我发现解决方法是在格式化之前把浮动到一个整数:

>>> print '{0:n}'.format(int(1234567.0)) 
1,234,567 

有一个格式字符串,将处理所有彩车,而不需要首先把它变成一个整数?

回答

6

使用语言环境模块格式功能:

>>> locale.setlocale(locale.LC_ALL, 'English') 
>>> 'English_United States.1252' 

>>> print locale.format('%.2f', 123456789.0, True) 
>>> 123,456,789.00 
6

区域设置是有点难看,因为它不是线程安全的,并且非常依赖于哪些区域实际上做。这可能是你想要的,但这里的Python的内部版本(从2.7开始):

>>> '{0:,.2f}'.format(123466666) 
'123,466,666.00' 

进行了规范见http://www.python.org/dev/peps/pep-0378/

+0

我喜欢这个答案更接受的。谢谢! – Mathias711 2016-02-12 08:17:50