Jinja2如何实现数字添加千位分隔符并四舍五入保留两位小数
你之前尝试的写法问题如下:
- 第二种
"{:0.2f}"|format(data[0]['amount'])仅实现了保留两位小数的效果,没有千分位逗号分隔,输出结果为250000.51,不符合样式要求 - 第三种
"{0:%.2f}"|format(data[0]['amount'])混用了旧式%格式化语法和新式format语法,属于语法错误,无法正常解析 - 第一种写法的格式符逻辑是正确的,只需要调整写法适配你的模板语法即可。
正确实现方案
方案一:标准四舍五入格式化(输出结果为250,000.51,符合通用数值格式化规范)
如果你用的是支持Python format语法的模板引擎(如Jinja2),直接用以下写法即可:
<td style="text-align:right;">${ "{:,.2f}".format(data[0]['amount']) }</td>
如果要求使用过滤器写法,调整为:
<td style="text-align:right;">${ data[0]['amount'] | format(",.2f") }</td>
方案二:截断小数位,输出你示例中的250,000.50
如果要求第三位小数直接舍弃不做四舍五入,需要先对数值做截断处理再格式化:
<td style="text-align:right;">${ "{:,.2f}".format(int(data[0]['amount'] * 100) / 100) }</td>
如果模板中无法直接调用int方法,也可以提前在后端把数值处理好再传到模板渲染。
内容的提问来源于stack exchange,提问作者Deiakk96
相关产品推荐
相关产品推荐

