今天因為工作需要要寫乙個保留小數點的方法或sql語句,number型別的小數,如果是0.5或-0.5,列印的時候就會顯示成.5或-.5,顯然不是我想要的,自己就簡單的寫了乙個,功能可以實現了,效率不高,高手們多多指教。
declare
num1 number := 1/4; -- 要進行捨入的數字
num2 number; -- 中間變數
ind number; -- 小數點位置
param number := 3; --精度,保留的小數字數,由於number精度限制,最大精度為38位
result varchar2(10000);
begin
num2 := round(num1, param); -- 對入引數字按照精度進行四捨五入
ind := instr(num2, '.'); -- 獲得『.』的位置
result := num2;
if ind = 0 then -- 沒有找到小數點,說明是整數
result := result || '.'; -- 在後面補個小數點
result := rpad(result, length(result) + param, '0'); -- 按照精度對結果進行補0操作
else -- 找到小數點
-- 小數的時候
if num2 < 1 then
-- 小於1的小數,要對小於1的小數進行首位補零
if num2 > 0 then
result := '0' || num2;
elsif (-1 < num2 and num2 < 0) then
result := '-0' || substr(result, ind);
else
result := num2;
end if;
end if;
ind := instr(result, '.');
result := rpad(result, ind + param, '0');
end if;
dbms_output.put_line(result);
end;
/
oracle小數點保留問題
最近公司有個業務清單提取需求,需要使用百分率,保留2位小數,其實只用round就可以實現 round data,2 但是格式不是很工整,對格式要求不嚴謹的情況下使用round即可,以下是網路搜尋到的處理方法 方法一 使用to char的fm格式,即 to char round data.amount...
Oracle小數點保留問題
oracle 小數點保留問題 最近公司有個業務清單提取需求,需要使用百分率,保留2位小數,其實只用round就可以 實現 round data,2 但是格式不是很工整,對格式要求不嚴謹的情況下使用round即可,以下是網路搜尋到的處理方法 方法一 使用to char的fm格式,即 to char r...
C Double toString保留小數點方法
有時候double型資料需要tostring 但又想保留小數,當值為整數,比如3.00時tostring後會變為 3 具體說明見下 1 stringstr0 i.tostring f 2 stringstr1 i.tostring f1 3 stringstr2 i.tostring f2 4 st...