避免在SSRS中舍入小值的错误

时间:2013-09-11 16:56:19

标签: sql regex reporting-services formatting rounding-error

使用SQL Server Reporting Services,如果数据库中的值为零,则使用以下格式表达式将其转换为---正确到2位小数:

,0.00;(#,0.00); '---'

但是,如果值为0.001,并且报告需要显示为2位小数(即应显示0.00),则生成的格式---仍显示在报告中。

有没有办法避免SSRS中的这些舍入问题,如果是这样,新格式/函数/会是什么? 0.001的结果应为0.00。

1 个答案:

答案 0 :(得分:3)

这是一个有趣的。我复制了你的结果:

enter image description here

对于最后一列,我在TextBox中使用了以下表达式:

=Switch(Fields!val.Value = 0.0, "---"
    , Fields!val.Value > 0.0, Format(Fields!val.Value, "#,0.00")
    , Fields!val.Value < 0.0, Format(Fields!val.Value, "(#,0.00);(#,0.00)"))

这会得到您需要的结果。

看起来不错吧?也许......为了在网页上显示或导出为PDF,我觉得这很好,如果讨厌,但是为了导出到Excel,因为你使用的是Format,所以在报告中显式返回一个字符串,因此将是Excel导出中的字符串,而不是导出为前三列中的数字。

只有您可以说这是否会在您的环境中出现问题。

我认为没有办法绕过SSRS将小数字视为零,因此在文本框中处理它可能是你唯一的选择。