假设我有一个表“Table1”,字段为Field1,“Table2”为Field2。我在“表1”中有另一个计算列,“CField”具有公式:
CField = ROUND(表1 [Field1] *相关(表2 [Field2]); 2)
该公式总体上运作良好,但有一段时间它没有给出正确的价值。例如:
在计算器中计算得出3.26495。舍入到2位小数应该给出3.26,但在这种情况下,PowerBI给出3.27。
我最好的假设是,Field1 * Field2的结果计算为CURRENCY,因此在舍入到3.27之前四舍五入为3.265。
我的问题是:有没有办法强制Power BI保持我需要的精度并得到我想要的3.26的结果?
编辑:3.27不只是一个显示问题。如果我将小数添加到显示的值,它给出3.27000。
答案 0 :(得分:3)
不知何故,我能够通过特定的数据类型设置重现这种情况。您可以检查这是否与您的情况相同。
正如你所说,这与Format
无关(即显示问题)。问题出在Data type
。当所有三列都设置为Decimal Number
时,Power BI将返回3.26
。
但是,当Field1
更改为Fixed decimal number
时,Power BI会返回3.27
。
固定十进制数 - 具有小数分隔符的固定位置。 小数点分隔符始终具有右侧四位数并允许 有意义的19位数。它可以代表的最大值是 922,337,203,685,477.5807(正面或负面)。固定十进制 在舍入可能引入错误的情况下,数字类型很有用。
因此,对此的解释是结果3.26495四舍五入为3.2650(四位小数),然后四舍五入为3.27(由DAX函数舍入)。
<强>结论:强>
将所有Data type
更改为Decimal Number
应解决舍入错误问题。
虽然我仍不清楚当Field1
的数据类型为Fixed decimal number
而非CField
时,为何会出现这种情况。欢迎任何补充意见。
答案 1 :(得分:0)
检查列数据类型。在Power BI中,十进制实际上是一个浮点,因此不应与其他数据库产品(如SQL Server)中的十进制数据类型混淆。