Plsql PL/SQL浮点加法
我想给float添加一个值,但它不起作用 我有一个浮点数,比如3.14,我想加上0.005,但是我得到了3.14 守则:Plsql PL/SQL浮点加法,plsql,add,Plsql,Add,我想给float添加一个值,但它不起作用 我有一个浮点数,比如3.14,我想加上0.005,但是我得到了3.14 守则: create or replace package pck_test is PROCEDURE ArrondiGeo(coord_x IN FLOAT,coord_y IN FLOAT,temp_x OUT FLOAT); end pck_test; / create or replace package body pck_test is PROCEDURE
create or replace package pck_test is
PROCEDURE ArrondiGeo(coord_x IN FLOAT,coord_y IN FLOAT,temp_x OUT FLOAT);
end pck_test;
/
create or replace package body pck_test is
PROCEDURE ArrondiGeo(coord_x IN FLOAT,coord_y IN FLOAT,temp_x OUT FLOAT,temp_y OUT FLOAT)
IS
tp_x FLOAT;
BEGIN
tp_x := mod(coord_x*10000,10);
if(tp_x>50)
then
if(tp_x>75)
then
temp_x:=trunc(coord_x,2);
temp_x:=temp_x+0.01;
else
temp_x:=trunc(coord_x,2);
temp_x:=temp_x+0.005;
end if;
else
if(tp_x>25)
then
temp_x:=trunc(coord_x,2);
temp_x:=temp_x+0.005;
else
temp_x:=trunc(coord_x,2);
end if;
end if;
END;
END pck_test;
/
有人知道它为什么不工作吗?即使您在示例代码中是一致的,也可能在程序的其余部分混合了
FLOAT
和BINARY\u FLOAT
是FLOAT
的子类型,精度高达38位NUMBER
是一个文字浮点数0.005
是一种精度约为7位小数的二进制浮点运算BINARY\u FLOAT
将是一个文本二进制浮点数0.005f
declare
w float := 3.14;
x float := 3.14*100000;
y binary_float := 3.14;
z binary_float := 3.14*100000;
begin
w := w + 0.005;
x := x + 0.005;
y := y + 0.005f;
z := z + 0.005f;
dbms_output.put_line(w);
dbms_output.put_line(x);
dbms_output.put_line(y);
dbms_output.put_line(z);
end;
制作:
3.145
314000.005
3.14500022E+000
3.14E+005
学会了让你今天充满活力的小东西:-)