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

Power BI(DAX查询)货币值舍入问题:如何避免舍入保留两位小数?

解决Power BI DAX中货币格式的舍入问题

你遇到的这个问题很常见——FORMAT函数搭配"Currency"格式时,默认会对数值进行四舍五入处理,这是标准货币显示的默认行为,但如果需要截断小数位而非四舍五入,可以通过先处理数值再格式化的方式实现。

方法1:用TRUNC函数截断小数位

TRUNC函数的作用是直接截断指定精度的小数部分,不会进行四舍五入。我们可以先把数值放大100倍,截断整数部分后再缩小100倍,得到保留两位小数且未舍入的数值,最后用FORMAT转成货币格式:

EVALUATE 
ROW(
    "TEST", 
    FORMAT(TRUNC(12345.678 * 100) / 100, "Currency")
)

执行这段代码后,你会得到$12,345.67(具体符号取决于你的区域设置),完全符合需求。

方法2:用FLOOR函数向下取整(仅适用于正数)

如果你的数值都是正数,FLOOR函数也能达到同样效果,它会将数值向下取整到指定的精度(这里是0.01,即两位小数):

EVALUATE 
ROW(
    "TEST", 
    FORMAT(FLOOR(12345.678, 0.01), "Currency")
)

⚠️ 注意:如果处理负数,FLOOR和TRUNC的行为会不同:

  • TRUNC(-12345.678 * 100)/100 得到 -12345.67(直接截断)
  • FLOOR(-12345.678, 0.01) 得到 -12345.68(向下取整,负数会更小)
    所以处理负数时要根据需求选择合适的函数。

为什么原来的代码会舍入?

FORMAT(12345.678, "Currency") 之所以会得到12345.68,是因为"Currency"格式默认遵循四舍五入规则来保留两位小数,这是大多数场景下货币显示的标准逻辑,但如果你需要特殊的截断需求,就必须先对原始数值做处理,再应用格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:22:33