在 SSRS 2016 Round() 函数中创建表达式时第三个参数出错

When creating expression in SSRS 2016 Round() function third param errors out

我在使用 Round() 函数时做错了什么?最后,我试图 return 一个数字来显示美元数字(不是数据类型,只是 $####.## 的格式为例)。

当我按以下方式使用 Round() 函数时,它工作正常并向上舍入...

=Round(125.239, 2)

输出为 125.24

我在表达式中使用的 Round() 函数如下...

=Round(125.239, 2, 1)

由于某种原因抛出错误。

Argument matching parameter 'mode' narrows from 'Integer' to 'System.MidpointRounding'

我做错了什么?为了补充我的问题,我应该说我正在尝试使用“1”作为第三个参数 ROUND DOWN 输出得到“125.23”作为最终结果。

SSRS 使用 VB.Net 函数,因此请尝试:

=Round(125.239, 2, MidpointRounding.AwayFromZero)

参考:MidpointRounding Enum

编辑:

根据 OP 的评论,实际之后的值是精确到小数点后两位,而不是四舍五入。这可以通过执行以下操作来实现:

=Floor(125.239*100) / 100

我们可以看到更多你的代码吗,如果你只是输入它是否有效:

SELECT ROUND(125.239, 2, 1)

向下舍入更像是截断。 ROUND 功能应该适合您,但如果您只是使用:

ROUND(125.239, 2, 1)

它将 return 125.230。如果你希望它的格式正确,我会这样做:

CAST(ROUND(125.239, 2, 1) AS DECIMAL(18,2))

这个 returns 125.23。这会将数字截断到小数点后两位,并在后面加上零,然后按照您想要的方式进行格式化。