フォーマットしたい
if integer, then integer.00
if float, then float.xx (2 digits of precision)
値が整数または浮動小数になる除算演算があります。結果を2桁の精度で保存したい。どうすればこれを達成できますか?
フォーマットしたい
if integer, then integer.00
if float, then float.xx (2 digits of precision)
値が整数または浮動小数になる除算演算があります。結果を2桁の精度で保存したい。どうすればこれを達成できますか?
実際に出力のみの場合は、ラウンド演算子を使用するか、単にフォーマットすることができます。
round ( value/divisor , 2)
to_char( value/divisor ,'99,999,999,990.99')
0
小数点の前に注意してください。これにより、1 未満の値が先行ゼロでよりきれいに見えます。例えば。0.55
の代わりに.55
。
create table test (dividend number,
divisor number,
result number,
result_rounded number);
insert into test values (100,10,null,null);
insert into test values (9,5,null,null);
insert into test values (10,15,null,null);
update test set result = dividend / divisor
,result_rounded = round(dividend/divisor,2);
select * from test;
結果:
DIVIDEND DIVISOR RESULT RESULT_ROUNDED
100 10 10 10
9 5 1.8 1.8
10 15 0.666666666667 0.67
しかし、最後にこれを出力しようとすると、フォーマットが機能し、丸めは大きな違いはありません。
select to_char(result,'99,999,999,990.99'),
to_char(result_rounded,'99,999,999,990.99')
from test;
結果
10.00 10.00
1.80 1.80
0.67 0.67
これを試して
SELECT TO_CHAR(1,'99,999,999,999.99') FROM DUAL; -- THIS GIVES 1.OO
SELECT TO_CHAR(1.3,'99,999,999,999.99') FROM DUAL; -- THIS GIVES 1.30
繰り返し99999
はBILLIONフォーマット用です。数千の場合、それは999,999.99