我要格式化
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