【问题标题】:Thousand separator in format string with floats带有浮点数的格式字符串中的千位分隔符
【发布时间】:2012-04-19 14:18:04
【问题描述】:

我想在浮点数中有千个分隔符。我正在做的是:

>>> 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

是否有一个格式字符串可以处理所有浮点数而无需先将其转换为整数?

【问题讨论】:

    标签: python formatting python-2.6


    【解决方案1】:

    语言环境设置有点难看,因为它不是线程安全的,并且非常依赖于语言环境的实际作用。这可能是你想要的,但这里是 Python 的内部版本(从 2.7 开始):

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

    有关规范,请参阅http://www.python.org/dev/peps/pep-0378/

    【讨论】:

    • 我比接受的答案更喜欢这个答案。谢谢!
    【解决方案2】:

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

    >>> locale.setlocale(locale.LC_ALL, 'English')
    >>> 'English_United States.1252'
    
    >>> print locale.format('%.2f', 123456789.0, True)
    >>> 123,456,789.00
    

    【讨论】:

      猜你喜欢
      • 2018-05-11
      • 2013-05-16
      • 2014-01-13
      • 2012-03-11
      • 2022-09-27
      • 2018-06-22
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多