我試圖計算受員工薪水影響的項目,但算術運算的結果不準確,因爲示例返回99.99999999999999而不是100。這隻發生在程序或函數內,但在分離的sql查詢中正常工作。在程序或函數中執行時的算術運算不正確結果(oracle)
EX:
CREATE TABLE SS_TEST_CUT
(
CUT NUMBER
);
create or replace procedure ss_test (x1 number , x2 number , num out number)
as
x number ;
begin
x := 100;
num := (x/30) *(30 - x1 - x2);
insert into ss_test_cut (cut) values (trunc (num,2));
end;
select cut from ss_test_cut;
實際結果是:99.99 預期結果:100
出側的過程給出預期的結果。
select (100/30) * 30 from dual;
輸出:100
爲何以及如何與不圓數量,以避免這一點,因爲其他的數字有小數部分? 謝謝,
'聲明總數(10);'也就是說,如果你不關心精度,如果你聲明總數(10,5);'或者其他任何...讓我知道它是否可行。 – g00dy
@ g00dy。你的建議肯定會奏效,但問題是OP不知道他想要什麼。 :-)。我仍在等待他的實際結果定義 – XING
@XING - true,沒有實際的結果定義... – g00dy