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
如何解决这个问题?
答案 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)