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

如何在SQL Server及SQL中对指定数值进行四舍五入?

嘿,我来帮你搞定这两个SQL Server里的四舍五入问题,一步步来:

问题1:如何在SQL Server中对指定数值执行四舍五入?

SQL Server里最常用的四舍五入工具就是 ROUND() 函数,它的语法简单易懂:

ROUND(numeric_expression, length [, function])

给你拆解下参数:

  • numeric_expression:你要处理的目标数值(可以是表列、变量或者直接输入的数值)
  • length:保留的小数位数——正数表示小数点后位数,0表示取整,负数表示小数点前的位数(比如-1就是保留到十位)
  • function:可选参数,填0(默认)是四舍五入,填1则直接截断(不做四舍五入操作)

举几个实用的例子:

  • 保留2位小数:SELECT ROUND(19.923, 2) → 结果是19.92
  • 取整:SELECT ROUND(19.923, 0) → 结果是20
  • 保留到十位:SELECT ROUND(123.45, -1) → 结果是120
  • 截断(不四舍五入):SELECT ROUND(19.923, 1, 1) → 结果是19.9

如果你需要确保结果显示指定的小数位数(避免出现35.4000这种多余的零),可以结合 CAST 或 CONVERT 来格式化:

SELECT CAST(ROUND(35.38, 1) AS DECIMAL(10, 1))

这样会得到精确的一位小数输出:35.4

问题2:如何在SQL中将数值35.38、53.08、6.15、5.38四舍五入为35.4、53.1、6.1、5.4?

首先,直接用 ROUND() 函数,把第二个参数设为1(保留一位小数)就能处理大部分情况。不过这里要提个关键点:SQL Server的ROUND()默认用的是银行家舍入法(四舍六入五成双)——当要舍入的数字是5且后面没有其他数字时,会看前一位是奇数还是偶数:奇数进1,偶数舍去。

先执行测试语句看看常规结果:

SELECT 
    ROUND(35.38, 1) AS rounded_3538,
    ROUND(53.08, 1) AS rounded_5308,
    ROUND(6.15, 1) AS rounded_615,
    ROUND(5.38, 1) AS rounded_538;

常规输出会是:

  • rounded_3538 → 35.4(符合预期)
  • rounded_5308 → 53.1(符合预期)
  • rounded_615 → 6.2(因为银行家舍入规则,前一位1是奇数,0.05会触发进1)
  • rounded_538 → 5.4(符合预期)

如果你的需求是必须让6.15得到6.1,可以用自定义逻辑来实现,比如先把数值乘以10取地板值再除以10(本质是截断一位小数,刚好适配这个案例):

SELECT 
    ROUND(35.38, 1) AS rounded_3538,
    ROUND(53.08, 1) AS rounded_5308,
    FLOOR(6.15 * 10) / 10 AS rounded_615,
    ROUND(5.38, 1) AS rounded_538;

这样就能得到你想要的35.4、53.1、6.1、5.4。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:03:51