oracle資料顯示保留小數點的問題

2021-08-26 02:00:04 字數 1190 閱讀 5500

今天因為工作需要要寫乙個保留小數點的方法或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...