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

PostgreSQL numeric类型查询输出无限小数的Rounding问题

PostgreSQL 数值除法无限小数显示异常解决方案

问题根源

你提供的两种写法失效的核心原因是精度控制操作的执行顺序错误:
你先对sum结果做了四舍五入/固定精度转换,之后才执行除以60的算术运算。PostgreSQL的numeric类型默认会保留算术运算的完整精度,不会自动截断小数位,因此除法操作会重新生成多位小数,相当于之前的精度控制完全失效。

MySQL和PostgreSQL的运算精度默认规则不同,MySQL会自动将除法结果的精度对齐之前转换的字段精度,所以你之前的写法可以在MySQL正常生效,但不适用于PostgreSQL。

可行解决方案

  • 方案1:运算完成后再执行四舍五入(最常用,返回numeric类型)
ROUND(sum(column) / 60, 2)

先完成除法运算,再对最终结果保留两位小数,直接实现四舍五入效果。

  • 方案2:运算完成后再做固定精度类型转换(返回指定精度的decimal类型)
CAST(sum(column) / 60 AS DECIMAL(18,2))

所有运算结束后再做类型转换,确保最终结果的精度符合要求。

  • 方案3:格式化输出为字符串(适合前端展示、数据导出场景)
to_char(sum(column) / 60, '9999999999999999.99')

直接输出格式化后的字符串,无需额外处理即可直接用于展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:27:00