首页 > 数据库 > mysql教程 > PostgreSQL中如何正确计算整数除法的结果避免截断?

PostgreSQL中如何正确计算整数除法的结果避免截断?

DDD
发布: 2024-12-17 10:39:24
原创
201 人浏览过

How Can I Correctly Calculate the Result of Integer Division in PostgreSQL to Avoid Truncation?

PostgreSQL 中的除法 ( / ) 计算错误

您在 PostgreSQL 中遇到除法问题,其中整数除法会导致结果不准确。让我们深入研究背景并提供解决问题的解决方案。

理解整数除法

整数除法,用“/”表示,将商截断为零。这意味着当两个整数相除时,结果会向下舍入到最接近的整数。

在给定的示例中,“dev_cost”和“sell_cost”都是整数。因此,查询“select dev_cost / sell_cost”返回 2,相当于 16000 除以 7500 的整数。但是,您需要软件数量来恢复 dev_cost,即 3。

解决计算问题

要获得精确的值,我们需要保证至少除法中的一个操作数是浮点值或十进制值。这可以防止截断并导致小数商。

一种解决方案是使用“CAST”运算符将其中一列转换为小数:

select cast(dev_cost as decimal) / sell_cost from software ;
登录后复制

另一种替代方法是使用用于转换 dev_cost 列的“::decimal”语法:

select dev_cost::decimal / sell_cost from software ;
登录后复制

这两种方法都会返回浮点结果,代表所需软件的确切数量。

四舍五入到最接近的整数

如果要将结果四舍五入到最接近的整数,代表恢复 dev_cost 的最小软件数量,可以使用“CEIL”函数:

select ceil(dev_cost::decimal / sell_cost) from software ;
登录后复制

这将四舍五入小数结果一直到下一个整数,确保售出足够的软件来支付开发成本。

以上是PostgreSQL中如何正确计算整数除法的结果避免截断?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板