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中文网其他相关文章!