0

假设我有一个带有字段 Field1 的表“Table1”,带有 Field2 的“Table2”。我在“Table1”、“CField”中有另一个计算列,它有公式:

CField = ROUND(Table1[Field1] * RELATED(Table2[Field2]); 2)

该公式总体上运行良好,只是有时它没有给出正确的值。例如 :

  • 字段1 = 50.23
  • 场 2 = 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。

4

2 回答 2

6

不知何故,我能够使用有关数据类型的特定设置来重现这种情况。您可以检查这是否与您的情况相同。

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

十进制数

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

固定十进制数

根据Power BI 文档

固定十进制数– 具有固定的小数分隔符位置。小数分隔符的右边总是有四位数字,并允许 19 位有效数字。它可以表示的最大值是922,337,203,685,477.5807(正或负)。固定小数类型在舍入可能引入错误的情况下很有用。

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

结论: 全部Data type改成Decimal Number应该可以解决舍入误差问题。


虽然我仍然不清楚为什么会在Field1有数据类型时发生这种情况Fixed decimal number,但不是CField。欢迎任何补充意见。

于 2017-08-24T04:46:57.697 回答
0

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

于 2017-08-24T04:12:07.570 回答