Powerbi 如何控制幂BI'的小数精度;s DAX

Powerbi 如何控制幂BI'的小数精度;s DAX,powerbi,dax,powerbi-datasource,Powerbi,Dax,Powerbi Datasource,假设我有一个表“Table1”和字段Field1,“Table2”和字段2。我在“表1”、“CField”中有另一个计算列,其公式如下: CField=圆形(表1[Field1]*相关(表2[Field2]);2) 该公式总体上运行良好,只是有时无法给出正确的值。例如: 字段1=50.23 字段2=0.065 在计算器中计算得到3.26495。四舍五入到2位小数应该得到3.26,但在这种情况下,PowerBI给出3.27 我最好的假设是Field1*Field2的结果被计算为货币,因此在四舍

假设我有一个表“Table1”和字段Field1,“Table2”和字段2。我在“表1”、“CField”中有另一个计算列,其公式如下:

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

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

  • 字段1=50.23
  • 字段2=0.065
在计算器中计算得到3.26495。四舍五入到2位小数应该得到3.26,但在这种情况下,PowerBI给出3.27

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

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


编辑:3.27不仅仅是一个显示问题。如果我在显示的值上加上小数,则得到3.27000。

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

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

不知何故,我能够通过数据类型的特定设置重现这种情况。您可以检查这是否与您的案例相同

正如您所说,这与
格式
(即显示问题)无关。问题在于
数据类型
。当所有三列都设置为十进制数时,Power BI返回
3.26

但是,当
Field1
更改为
固定十进制数时,Power BI返回
3.27

根据:

固定小数–小数分隔符的位置固定。 小数点分隔符的右边总是有四位数,并且允许 对于19位重要数字。它所能代表的最大值是 922337203685477.5807(正或负)。固定小数 数字类型在舍入可能导致错误的情况下很有用

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

结论: 将所有
数据类型
更改为
十进制数
可以解决舍入误差问题



虽然我仍然不清楚为什么当
Field1
的数据类型为
固定小数
,而不是
CField
时会发生这种情况。欢迎提供任何补充意见。

不知何故,我能够通过数据类型的特定设置重现此案例。您可以检查这是否与您的案例相同

正如您所说,这与
格式
(即显示问题)无关。问题在于
数据类型
。当所有三列都设置为十进制数时,Power BI返回
3.26

但是,当
Field1
更改为
固定十进制数时,Power BI返回
3.27

根据:

固定小数–小数分隔符的位置固定。 小数点分隔符的右边总是有四位数,并且允许 对于19位重要数字。它所能代表的最大值是 922337203685477.5807(正或负)。固定小数 数字类型在舍入可能导致错误的情况下很有用

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

结论: 将所有
数据类型
更改为
十进制数
可以解决舍入误差问题



虽然我仍然不清楚为什么当
Field1
的数据类型为
固定小数
,而不是
CField
时会发生这种情况。欢迎提供任何补充意见。

您能在小型pbix报告中共享一个复制程序以便我帮您修复吗?您能在小型pbix报告中共享一个复制程序以便我帮您修复吗?我一直在查找,发现
CURRENCY*REAL=CURRENCY
。考虑到
CURRENCY*CURRENCY=REAL
,不确定这有多大意义。无论如何,我最终通过执行
四舍五入(表1[Field1]*货币(相关)(表2[Field2]);2)
来修正我的计算,这并不理想,但在我的情况下不会影响结果。我更愿意做
REAL(表1[Field1])
,但这样的选项似乎不存在。我一直在寻找,发现
CURRENCY*REAL=CURRENCY
。考虑到
CURRENCY*CURRENCY=REAL
,不确定这有多大意义。无论如何,我最终通过执行
四舍五入(表1[Field1]*货币(相关)(表2[Field2]);2)
来修正我的计算,这并不理想,但在我的情况下不会影响结果。我宁愿做
REAL(表1[Field1])
,但这样的选项似乎不存在。