SSRS百分比格式需求:保留一位小数且不四舍五入
解决SSRS中百分比截断格式化问题的方案
SSRS表达式层面处理
SSRS自带的数字格式默认采用四舍五入逻辑,因此需要先通过表达式截断数值到目标精度,再应用格式:
方法1:使用Floor函数实现截断
针对保留一位小数且不四舍五入的需求,修改原表达式,通过Floor函数将数值放大10倍取整后再缩小10倍,实现截断效果:
iif(ReportItems!Textbox14.Value <> 0, Floor((ReportItems!amount.Value / ReportItems!Textbox14.Value) * 100 * 10) / 10, 0)
将该文本框的格式设置为 #0.#,即可显示55.5。
如果需要直接显示带%符号的格式,调整表达式为:
iif(ReportItems!Textbox14.Value <> 0, Floor((ReportItems!amount.Value / ReportItems!Textbox14.Value) * 10) / 100, 0)
再设置文本框格式为 #0.#%,会显示为55.5%。
方法2:字符串截断法(适合正数场景)
将计算结果转为字符串后,截取小数点后一位再转回数值:
iif(ReportItems!Textbox14.Value <> 0, CDbl(Left(CStr((ReportItems!amount.Value / ReportItems!Textbox14.Value) * 100), InStr(CStr((ReportItems!amount.Value / ReportItems!Textbox14.Value) * 100), ".") + 1)), 0)
格式同样设置为 #0.# 即可。
SQL层面处理
若倾向于在数据源端完成计算,可在SQL查询中直接截断数值,避免SSRS端的格式问题:
SELECT amount, Textbox14, CASE WHEN Textbox14 <> 0 THEN FLOOR((amount / Textbox14) * 1000) / 10 ELSE 0 END AS CalculatedPercentage FROM YourTableName
将查询结果的CalculatedPercentage字段拖入SSRS报表,直接设置格式为 #0.# 即可得到55.5。
内容的提问来源于stack exchange,提问作者Brian Evans
相关产品推荐
相关产品推荐

