SQLite执行除法查询无法显示小数数值,求原因及解决办法
SQLite整数除法导致round结果不符合预期的问题解决
问题原因
SQLite对整数之间的除法会执行整数除法,直接截断小数部分。你写的10/3中,10和3都是整数,计算结果先得到整数3,后续再对3调用round(...,5),最终结果只能是3.0——这就是你尝试转float、用round等操作无效的核心原因:除法已经把小数部分丢掉了,后续操作无法找回。
解决方法
只要确保除法运算时至少有一个操作数是浮点型,就能触发浮点除法,保留小数部分后再用round处理:
- 直接将其中一个数写成浮点格式:
select round(10.0/3, 5) as example - 用
CAST显式转换类型:select round(CAST(10 AS FLOAT)/3, 5) as example - 先通过乘1.0将整数转为浮点再计算:
select round((10*1.0)/3, 5) as example
以上方法都会得到3.33333的正确结果。
内容的提问来源于stack exchange,提问作者Zombraz
相关产品推荐
相关产品推荐

