首页 文章

如何在Power BI的DAX上控制小数精度

提问于
浏览
0

假设我有一个表“Table1”,字段为Field1,“Table2”为Field2 . 我在“Table1”中有另一个计算列,“CField”具有公式:

CField = ROUND(表1 [Field1] *相关(表2 [Field2]); 2)

该公式整体运作良好,但有一段时间它没有给出正确的 Value . 例如 :

  • Field1 = 50.23

  • Field2 = 0.065

在计算器中计算得到3.26495 . 舍入到2位小数应该给出3.26,但在这种情况下,PowerBI给出3.27 .

我最好的假设是Field1 * Field2的结果计算为CURRENCY,因此在舍入到3.27之前四舍五入为3.265 .

我的问题是:有没有办法强制Power BI保持我需要的精度并得到我想要的3.26的结果?

编辑:3.27不只是一个显示问题 . 如果我将小数添加到显示的值,它给出3.27000 .

2 回答

  • 0

    不知怎的,我能够通过关于数据类型的特定设置重现这种情况 . 您可以检查这是否与您的情况相同 .

    如你所说,这与 Format 无关(即显示问题) . 问题出在 Data type . 当所有三列都设置为 Decimal Number 时,Power BI返回 3.26 .

    decimal number

    但是,当 Field1 更改为 Fixed decimal number 时,Power BI将返回 3.27 .

    fixed decimal number

    根据Power BI documentation

    固定十进制数 - 具有小数分隔符的固定位置 . 小数分隔符的右侧始终有四位数字,允许有效位数为19位 . 它可以代表的最大值是922,337,203,685,477.5807(正面或负面) . 固定十进制数类型在舍入可能引入错误的情况下很有用 .

    因此,对此的解释是结果3.26495四舍五入为3.2650(四位小数),然后四舍五入为3.27(由DAX函数舍入) .

    Conclusion: 将所有 Data type 更改为 Decimal Number 应解决舍入错误问题 .


    虽然我仍然不清楚为什么当 Field1 的数据类型为 Fixed decimal number 而不是 CField 时会发生这种情况 . 欢迎提出任何补充意见 .

  • 3

    检查列数据类型 . 在Power BI中,十进制实际上是一个浮点,因此不应与其他数据库产品(如SQL Server)中的十进制数据类型混淆 .

相关问题