PostgreSQL除法查询结果因精度显示为0,如何输出正确小数值
问题原因
PostgreSQL 中两个整数做除法运算时默认执行整数除法,会直接截断小数部分只保留整数位。你之前的写法是先执行25/8175133得到整数0之后再做类型转换,自然不会得到正确的小数值。另外你写的第二个类型转换语句多打了一个AS关键字,即使修正这个语法问题,也不会得到预期结果。
解决方法
你只需要在做除法运算前,把其中一个操作数转换为非整数的数值类型即可:
- 方法1:显式转换其中一个操作数的类型
-- 转换为DECIMAL类型做运算 SELECT CAST(25 AS DECIMAL) / 8175133; -- 转换为DOUBLE PRECISION类型做运算 SELECT CAST(25 AS DOUBLE PRECISION) / 8175133; - 方法2:简化写法,给整数添加
.0后缀,PostgreSQL会自动识别为numeric类型SELECT 25.0 / 8175133; - 方法3:如果需要控制输出的小数位数,可以搭配
ROUND函数使用-- 示例:保留10位小数 SELECT ROUND(25.0 / 8175133, 10);
内容的提问来源于stack exchange,提问作者ozzboy
相关产品推荐
相关产品推荐

