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

T-SQL中SUM与ROUND计算结果不符,如何实现小数向上取整?

问题分析与解决

为什么结果是.65而非.66?

  • 你的语句逻辑是先对每行的「单价×数量」结果四舍五入到2位小数,再将所有行的舍后值求和。逐行舍入会导致每行的微小小数部分被截断或进位,这些误差累加后,最终总和的小数部分为.65。
  • 而直接求和后保留三位小数得到的4747.662,是未经过逐行舍入的精确总价总和,这个值四舍五入到2位小数就是.66——两者的差异完全来自于「舍入时机」的不同。

如何实现得到.66的需求?

要得到四舍五入后为.66的结果,需调整操作顺序:先计算所有行的总价总和,再对总和进行四舍五入到2位小数,对应的T-SQL语句如下:

ROUND(SUM([SOI].[SOIQuantity] * [SOI].[SOIPrice]), 2) AS [TotalPrice]

如果需要同时查看未舍入的原始总和,可以额外增加一列:

SUM([SOI].[SOIQuantity] * [SOI].[SOIPrice]) AS [TotalUnrounded],
ROUND(SUM([SOI].[SOIQuantity] * [SOI].[SOIPrice]), 2) AS [TotalPrice]

内容的提问来源于stack exchange,提问作者Jesus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:40:24