在SSRS表达式中舍入到最接近的10时出错

时间:2018-11-09 18:52:14

标签: reporting-services expression rounding

我搜索了现有线程,无法弄清楚我在哪里做错了...

我试图获取两个值的平均值,然后将平均值四舍五入到最接近的TEN(10)。

我的表情是:

=ROUND((Fields!Cyl1Stress.Value + Fields!Cyl2Stress.Value) / 2, -1)

以上返回错误。

四舍五入到最接近的十倍效果很好,但是一旦我将1更改为-1,我就会得到错误。

Cyl1Stress.Value = 7600Cyl2Stress.Value = 7490处。

=ROUND((Fields!Cyl1Stress.Value + Fields!Cyl2Stress.Value) / 2, **1**) 

上面的代码返回7545。

但是我需要结果为7550,所以我将公式更改为:

=ROUND((Fields!Cyl1Stress.Value + Fields!Cyl2Stress.Value) / 2, **-1**). 

这返回一个错误。

无法弄清楚为什么它不起作用!

文本框属性为数字,小数点后0位。

1 个答案:

答案 0 :(得分:2)

我认为您不能对Digits的{​​{1}}参数使用负值。 documentation指示:

  

返回值中的小数位数。对于十进制值,范围可以从0到28。对于双精度值,范围可以从0到15。

您可以通过将值除以10,四舍五入到最接近的整数,然后乘以10,来完成所需的工作。另外请注意,如果您想将以Round结尾的值四舍五入到下一个10,您将需要向5添加第三个参数来表明这一点,否则我认为默认行为会四舍五入到最接近的偶数。这会使您的示例四舍五入到7540,而不是7550。

此表达式应为您要查找的内容

Round

对于您的示例值,这会将7545转换为754.5,四舍五入为最接近的整数,然后将其四舍五入为零而不是最接近的偶数(755),然后乘以10(7550)。