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
相关产品推荐
相关产品推荐

