如何在Postgresql中使用Banker的舍入模式?

时间:2018-08-02 21:08:24

标签: postgresql rounding bankers-rounding

我尝试搜索,但是似乎找不到在Postgresql中实现Banker的舍入模式的实现。我发现该线程正在努力在T-SQL https://www.sqlservercentral.com/Forums/Topic246556-8-1.aspx中创建实现。

例如,Andrew Vasylevskyy很好地给出了一些例子 银行家四舍五入的示例(.NET中Math.Round的结果):

Math.Round(3.454,2) -> 3.45
Math.Round(3.455,2) -> 3.46
Math.Round(3.445,2) -> 3.44
Math.Round(3.456,2) -> 3.46 

基于该线程PostgreSQL round(v numeric, s int),似乎没有办法将默认round()函数配置为使用特定模式,并且不使用Banker的舍入模式。我确实看到有round_half_evenround_half_odd,但据我了解,这与Banker的取整不一样。

有人创建了执行此操作的功能吗?或者可以添加扩展名来执行此操作?

1 个答案:

答案 0 :(得分:1)

WikipediaJava说银行家的舍入是从一半到一半。

我不知道Postgres扩展是否实现了替代取整,这令人惊讶。我发现的最好的是this answer with implementations as functions