Sql 是否总是四舍五入到特定的小数点?

Sql 是否总是四舍五入到特定的小数点?,sql,postgresql,rounding,Sql,Postgresql,Rounding,我有42.4300001,我希望值为42.44。在PostgreSQL中有没有一种很好的方法可以做到这一点?一种方法是 trunc(42.4300001::numeric + 0.00999999999999999999999999, 2) 双参数trunc函数需要转换为numeric 注意:这只适用于实数和双精度数字。一种方法是 trunc(42.4300001::numeric + 0.00999999999999999999999999, 2) 双参数trunc函数需要转换为numer

我有42.4300001,我希望值为42.44。在PostgreSQL中有没有一种很好的方法可以做到这一点?

一种方法是

trunc(42.4300001::numeric + 0.00999999999999999999999999, 2)
双参数
trunc
函数需要转换为
numeric

注意:这只适用于
实数
双精度
数字。

一种方法是

trunc(42.4300001::numeric + 0.00999999999999999999999999, 2)
双参数
trunc
函数需要转换为
numeric

注意:这只适用于
实数
双精度
数字。

ceil()
始终舍入到下一个整数。结果:
42.4400000000000000

要减少尾随零,可以执行以下操作

trunc(结果,2)
或转换为
result::decimal(数字,2)

ceil()
始终舍入到下一个整数。结果:
42.4400000000000000

要减少尾随零,可以执行以下操作


trunc(result,2)
或cast to
result::decimal(digits,2)

这会在小数点左侧加上1,并且不会将
.43
四舍五入到
.44
哦,抱歉,修复了。您的修复无法使用仍然四舍五入的
42.44
。但是你的解决方案还是会加起来的。这很容易纠正。@LaurenzAlbe我不相信加一个数字是一个通用的解决方案。这可能又错了:
42.4300000000000000001
这会在小数点左侧加1,并且不会将
.43
四舍五入到
.44
哦,抱歉,已经修复。您的修复将无法使用仍然四舍五入的
42.44
。但是你的解决方案还是会加起来的。这很容易纠正。@LaurenzAlbe我不相信加一个数字是一个通用的解决方案。这将再次出错:
42.4300000000000000000000001