Pal*_*mer 4 python currency python-2.7 python-babel
我正在一个使用多种语言的网站上工作,为了相应地显示价格/货币,我们使用了 babel 库。问题是当调用 format_currency 时,它总是返回美分部分,即使价格被显式转换为整数。
例子:
>>> print format_currency(100, 'EUR', locale='fr_FR')
100,00 €
>>> print format_currency(int(100), 'EUR', locale='fr_FR')
100,00 €
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,以便返回值排除美分部分以具有类似的东西
>>> print format_currency(int(100), 'EUR', locale='fr_FR')
100 €
Run Code Online (Sandbox Code Playgroud)
小智 6
您必须添加带有格式的currency_digits参数才能实现您的目标
\n\n>>> print(format_currency(100, 'EUR', locale='fr_FR')\n100,00\xc2\xa0\xe2\x82\xac\n>>> print(format_currency(100, 'EUR', locale='fr_FR', currency_digits=False))\n100,00\xc2\xa0\xe2\x82\xac\n>>> print(format_currency(100, 'EUR', format=u'#,##0\\xa0\xc2\xa4', locale='fr_FR'))\n100,00\xc2\xa0\xe2\x82\xac\n>>> print(format_currency(100, 'EUR', format=u'#,##0\\xa0\xc2\xa4', locale='fr_FR', currency_digits=False))\n100\xc2\xa0\xe2\x82\xac\nRun Code Online (Sandbox Code Playgroud)\n
您可以指定自定义格式:
format_currency(100, 'EUR', format=u'#,##0\xa0¤', locale='fr_FR')
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅LDML 标记规范;该\xa0字节是一个U+00A0 无中断空格字符;而不是一个普通的空间。
为fr_FR默认的是#,##0.00\xa0¤,并且.00部分信号,一个小数部分应该用两位数字进行打印,如果不存在填充。我上面的示例只是删除了小数部分,.##如果数字不是精确整数,您也可以使用允许分数,但请注意,在这种情况下,.5打印的值没有第二位数字!
演示:
>>> from babel.numbers import format_currency
>>> print format_currency(100, 'EUR', format=u'#,##0\xa0¤', locale='fr_FR')
100 €
>>> print format_currency(100.0, 'EUR', format=u'#,##0.##\xa0¤', locale='fr_FR')
100 €
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4043 次 |
| 最近记录: |