本文介绍了获取精确的数字除法结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
SELECT 9/2
给出 4
为什么给postgresql自动舍入结果?
Why gives postgresql automatically rounded result?
有一些选项可以防止这种情况发生? (也就是说,我需要在除法后,如果结果为浮点型,则返回准确而不是四舍五入的结果。)
There are some option for prevent this? (That is, I need that after division, if result is float, returns exactly and not rounded result).
UPDATE :
例如从函数中,我需要返回浮点数
for example from function, I need return floating number
CREATE OR REPLACE FUNCTION division_test (arg1 INTEGER, arg2 INTEGER,) RETURNS NUMERIC
AS $$
BEGIN
RETURN arg1 / arg2;
END;
$$
LANGUAGE plpgsql;
SELECT除法测试(9,2)
结果:4
如何解决此问题?
推荐答案
如果没有尝试, SELECT 9.0 / 2.0
会帮助您吗?
Without having tried it, would SELECT 9.0/2.0
help you?
作为已编辑问题的答案:
是否会更改参数help中的数据类型?
Would changing the datatype in the argument help?
CREATE OR REPLACE FUNCTION division_test (arg1 REAL, arg2 REAL) RETURNS REAL
AS $$
BEGIN
RETURN arg1 / arg2;
END;
$$
LANGUAGE plpgsql;
或者根据您要求的精度,也可以使用 NUMERIC
或其他配件。
Or depending on your required precision, you could also use NUMERIC
or another fitting numeric type.
这篇关于获取精确的数字除法结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!