2

SELECT 9/24

为什么给 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

如何解决这个问题呢?

4

2 回答 2

5

没试过,对你有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或其他合适的数字类型

于 2013-06-06T13:57:08.283 回答
2

一个选项乘以或除以 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)
于 2016-06-10T03:26:47.977 回答