1

フォーマットしたい

if integer, then integer.00

if float, then float.xx (2 digits of precision)

値が整数または浮動小数になる除算演算があります。結果を2桁の精度で保存したい。どうすればこれを達成できますか?

4

2 に答える 2

5

実際に出力のみの場合は、ラウンド演算子を使用するか、単にフォーマットすることができます。

round  ( value/divisor , 2)
to_char( value/divisor ,'99,999,999,990.99') 

0小数点の前に注意してください。これにより、1 未満の値が先行ゼロでよりきれいに見えます。例えば。0.55の代わりに.55

SQL フィドルの例

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

しかし、最後にこれを出力しようとすると、フォーマットが機能し、丸めは大きな違いはありません。

SQL フィドルの例

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
于 2012-09-30T20:01:14.020 に答える
1

これを試して

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

于 2012-09-30T08:16:32.477 に答える