代码之家  ›  专栏  ›  技术社区  ›  panchicore

python区域设置货币和负数

  •  0
  • panchicore  · 技术社区  · 17 年前

    为什么?

    C:\path\>manage.py shell
    Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.    
    
    >>> import locale
    >>> locale.getlocale()
    ('Spanish_Colombia', '1252')
    >>> locale.currency( 1885, grouping=True )
    '$ 1.885,00'
    >>> locale.currency( -1885, grouping=True )
    '($ 1.885,00)'
    

    _t能返回-1.885,00美元吗?

    2 回复  |  直到 17 年前
        1
  •  2
  •   Alex Martelli    17 年前

    数字周围的括号表示它是借方(即负数),而不是贷方(正数),这是会计中的一种常见惯例(我猜是因为括号比前面的小减号/破折号更明显,区分借方和贷方至关重要;-)。

    因此,许多地区将该约定表示为设置负数格式的“正确方法”,这并不奇怪。如果您想使用区域设置惯例的某些部分,例如$符号和逗号,但不使用括号等其他部分,则必须使用abs(yournumber)而不是仅使用yournumber作为locale.currency的输入,然后,如果您的编号为<0,则执行一些字符串操作以查找第一个数字,并使用das形成新的字符串。H在它前面(或其他字符串操作,取决于您表示负数的所需方式——例如,符号“减号”[破折号]可能在货币符号之前,或在整个字符串的右侧)。

    顺便问一下,为什么你认为任何一个要阅读该输出的人都想要一些但不是所有的语言环境约定应用于它?

        2
  •  2
  •   Ian Kemp    17 年前

    在您的区域设置中,用括号括起来的数字表示它是负数。在控制面板/区域和语言设置中检查这个,python可能会从那里得到它。

    推荐文章