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

Oracle SQL中如何将浮点数四舍五入保留两位小数

Oracle 浮点数四舍五入保留2位小数实现

问题场景

待处理原始浮点值:

14.996
2248.43
-2334.06
12.2333334455 
74.38133333333328

要求处理后保留2位小数、按标准四舍五入取值,预期输出:

15.00
2248.43
-2334.06
12.24
74.40 

此前尝试CAST函数、带格式化参数的TO_NUMBER函数均未得到正确结果。

正确实现

这里有两个容易踩的误区:

  • 浮点数直接用CAST转NUMBER(precision,scale)时,受浮点数底层存储精度误差影响,可能出现四舍五入结果不符合预期的情况
  • 纯数值类型不会保留小数末尾的0,比如数值15只会存储为15,不会自动展示为15.00,TO_NUMBER是字符串转数值的函数,本身不负责格式化展示,自然无法输出带末尾0的固定两位小数格式。

方案1:返回固定两位小数格式(完全匹配预期展示效果)

先通过ROUND()完成数值层面的四舍五入,再通过TO_CHAR()固定小数位展示格式,不足位数自动补0:

SELECT TO_CHAR(ROUND(目标字段名, 2), 'FM9999999990.00') AS format_result
FROM 目标表名;

格式模板里的FM前缀用来去掉结果前多余的空格,9999999990.00表示整数部分最多支持10位(可根据实际数值长度调整9的数量)、最少保留1位整数,小数部分固定2位,不足时自动补0。

方案2:仅保证数值精度为2位小数

如果不需要强制展示末尾的0,只需要数值精度符合要求,直接用ROUND即可:

SELECT ROUND(目标字段名, 2) AS num_result
FROM 目标表名;

验证结果

用给出的测试值代入方案1验证,输出完全匹配预期:

原始值处理结果
14.99615.00
2248.432248.43
-2334.06-2334.06
12.233333445512.24
74.3813333333332874.40

内容的提问来源于stack exchange,提问作者Deepak Kumar Nayak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:48:21