You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Babel格式化负数值货币时出现格式错误

解决Babel format_currency负数瑞士法郎格式问题

你遇到的问题根源是没有在格式字符串中明确指定负数的显示规则,导致Babel采用默认的负数处理逻辑,结果不符合预期。要得到CHF -100.50的格式,只需在自定义格式字符串里添加分号分隔的负数模式即可。

修正后的代码示例

from babel.numbers import format_currency

value = -100.50
# 自定义格式串,分号前是正数格式,分号后是负数格式
print(format_currency(value, 'CHF', '¤¤ #,##0.00;¤¤ -#,##0.00', locale='de_CH'))

运行这段代码会直接输出你想要的CHF -100.50。

为什么之前的写法不对?

  • 第一个调用用了de_CHlocale的默认格式,该locale对CHF的默认负数格式就是把负号紧跟在货币符号后,所以输出CHF-100.50
  • 后面两个自定义格式只定义了正数模式,没有指定负数模式,Babel会自动使用默认的负数规则(把负号放在最前面),所以输出-CHF 100.50
  • 通过分号分隔正数/负数模式,就能完全掌控负数的显示样式,让货币符号在前,负号紧跟其后再带数字

内容的提问来源于stack exchange,提问作者user2828408

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:35:20