SSRS-Visual Studio舍入异常求助:round函数结果不符合预期
SSRS 小数舍入与显示格式问题解决方案
问题根源
SSRS 默认的 Round() 函数采用银行家舍入法(四舍六入五成双),因此像 0.1805 这类中间值会被舍入到偶数位(0.180),而非常规四舍五入逻辑;直接设置列显示3位小数则会让0显示为0.000,无法满足需求。
解决方案
通过组合自定义舍入逻辑与条件格式化表达式来实现需求:
实现标准四舍五入到三位小数
使用Math.Round()并指定MidpointRounding.AwayFromZero参数,强制中间值向上舍入:Math.Round(Fields!目标字段.Value, 3, MidpointRounding.AwayFromZero)此表达式会将0.1805舍入为0.181,0.1804舍入为0.180,0.1806正常舍入为0.181。
条件控制显示格式
通过表达式判断舍入后的值是否为0,分别设置显示文本:Dim roundedVal As Double = Math.Round(Fields!目标字段.Value, 3, MidpointRounding.AwayFromZero) IIF(roundedVal = 0, "0", Format(roundedVal, "0.000"))该表达式会让舍入后的值为0时显示"0",非0值则显示三位小数格式的字符串。
测试验证
- 输入0.1805 → 输出0.181
- 输入0.1804 → 输出0.180
- 输入0 → 输出0
- 输入0.1806 → 输出0.181
内容的提问来源于stack exchange,提问作者Charles916
相关产品推荐
相关产品推荐

