获得数字划分的确切结果

时间:2013-06-06 13:53:03

标签: postgresql postgresql-9.2

SELECT 9/2提供4

为什么给postgresql自动舍入结果?

有一些防止这种情况的选择吗? (也就是说,我需要在除法之后,如果结果是浮点数,则返回完全而不是舍入结果)。

更新

例如来自函数,我需要返回浮点数

       CREATE OR REPLACE FUNCTION division_test (arg1 INTEGER, arg2 INTEGER,) RETURNS NUMERIC
        AS $$
            BEGIN
            RETURN arg1 / arg2;
            END;
        $$
        LANGUAGE plpgsql;

SELECT division_test (9,2)

结果:4

如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

如果没有尝试过,SELECT 9.0/2.0会帮助你吗?

作为编辑问题的答案:

会更改参数帮助中的数据类型吗?

       CREATE OR REPLACE FUNCTION division_test (arg1 REAL, arg2 REAL) RETURNS REAL
        AS $$
            BEGIN
            RETURN arg1 / arg2;
            END;
        $$
        LANGUAGE plpgsql;

或者,根据您所需的精确度,您还可以使用NUMERIC或其他契约numeric type

答案 1 :(得分:1)

一个选项乘以或除以1.0,结果将是小数。

psql (9.4.5)
Type "help" for help.

tabd=# select 1 / 10;  
----------
    0 (1 row)

tabd=# select 1.0 * 1 / 10;    
------------------------
 0.10000000000000000000 (1 row)