You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSRS-Visual Studio舍入异常求助:round函数结果不符合预期

SSRS 小数舍入与显示格式问题解决方案

问题根源

SSRS 默认的 Round() 函数采用银行家舍入法(四舍六入五成双),因此像 0.1805 这类中间值会被舍入到偶数位(0.180),而非常规四舍五入逻辑;直接设置列显示3位小数则会让0显示为0.000,无法满足需求。

解决方案

通过组合自定义舍入逻辑与条件格式化表达式来实现需求:

  1. 实现标准四舍五入到三位小数
    使用 Math.Round() 并指定 MidpointRounding.AwayFromZero 参数,强制中间值向上舍入:

    Math.Round(Fields!目标字段.Value, 3, MidpointRounding.AwayFromZero)
    

    此表达式会将0.1805舍入为0.181,0.1804舍入为0.180,0.1806正常舍入为0.181。

  2. 条件控制显示格式
    通过表达式判断舍入后的值是否为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:27:15