oracle保留小数,例如0.00

Oracle小数点保留问题
2013-03-03 11:45:49     我来说两句      作者:shm2008520
收藏    我要投稿

Oracle小数点保留问题

如果你在实际应用中需要使用到Oracle小数点保留的问题的话,其实方法很简单我们只用round即可实现(round(_data,2)  ),但是如果其格式不工整的话,你就可以使用round即可,以下是网络搜索到的处理方法:

www.2cto.com

方法一:使用to_char的fm格式,即:

1.to_char(round(data.amount,2),‘FM9999999999999999.00‘) as amount

不足之处是,如果数值是0的话,会显示为.00而不是0.00。

另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”。

解决方式如下:

www.2cto.com

1.select decode(salary,0,‘0.00‘, (to_char(round(salary,2),‘fm99999999999999.00‘))) from can_do;

方法二:使用case when then else end进行各种情况的判断处理:

1.case

2.when instr(to_char(data.amount), ‘.‘) <1 then

3.data.amount || ‘.00‘

4.when instr(to_char(data.amount), ‘.‘) + 1 = length(data.amount) then

5.data.amount || ‘0‘

6.else

7.to_char(round(data.amount, 2))

8.end as amount_format

方法三:可以使用Oracle自带的参数设置,即

1.column amount format l9999999999.99

此方法的不足是,format中的小数点左面的9的个数要已知,否则会出现超过的数字显示为########的情况。

另外一个Oracle小数点保留问题是,使用column时,设置生效是session级还是system级,需要注意。

也许某张表的数值列不总是要求所有的地方显示时,都是小数点后两位的格式,

此时只能使用session级,但是有个数据库连接会话超时的Oracle小数点保留问题,如果不是使用到system级,不建议使用该方法。

方法四:使用to_char+trim的方式,如下:

1.select trim(to_char(1234,‘99999999999999.99‘)) from dual;

或者   www.2cto.com

1.select ltrim(trim(to_char(1234.525,‘00000000000000.00‘)),‘0‘) from dual;

此处使用了14个9或者14个0的格式,建议使用14个9的方式,方便些。方法四的不足之处是

如果数值是0的话,转化之后为.00而不是0.00,补救措施是,decode一下。

另一需要注意的是,格式中小数点左边9或者0的个数要够多,负责查询的数字会显示为n个符号“#”。

如下:

1.select decode(salary,0,‘0.00‘,trim(to_char(salary,‘99999999999999.99‘))) from can_do;

或者

1.select decode(salary,0,‘0.00‘, ltrim(trim(to_char(salary,‘00000000000000.00‘)),‘0‘)) from can_do;

结论:建议使用方法四中的trim+to_char的方式或者方法一的补救之后的方式,而且最好使用小数点左边n个9的方式,不要使用0的方式,否则,要多一步trim处理。

即:

1.select decode(salary,0,‘0.00‘, trim(to_char(salary,‘99999999999999.99‘))) from can_do;

或者

1.select decode(salary,0,‘0.00‘, (to_char(round(salary,2),‘fm99999999999999.00‘))) from can_do;

以上的相关内容就是对Oracle小数点保留问题的介绍,望你能有所收获。

时间: 2024-08-30 01:46:32

oracle保留小数,例如0.00的相关文章

对数值数据的格式化处理(保留小数点后N位)

项目中有时会遇到对数值部分进行保留操作,列如保留小数点后2位,所有的数据都按这种格式处理, //保留小数点后2位,都按这种格式处理,没有补0 DecimalFormat df = new DecimalFormat("0.00"); //没有小数,或者小数部分不足是用0来补 BigDecimal db1 = new BigDecimal(111); System.out.println(df.format(db1)); //下面比较奇怪,不论是字符串表示,还是数字表示,只要没有大于11

保留小数的方法

1.利用Math.round()的方法: 两个int型的数相除,结果保留小数点后两位: int a=1188; int b=93; double c; c=(double)(Math.round(a/b)/100.0);//这样为保持2位 打印结果:c=0.12 c=new Double(Math.round(a/b)/1000.0);//这样为保持3位 打印结果:c=0.012 2.另一种办法 import java.text.DecimalFormat; DecimalFormat df2

java中double变量保留小数问题

(转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点后面位数过长,四舍五入保留指定位数: 可以用以下代码实现: public class TestDemo { public static void main(String[] args) {     double a=15.32743859;     double b=Math.round(a*100

BigDecimal 高精度计算 熟悉扩展,java除法保留小数问题

java保留两位小数问题: 方式一: 四舍五入  double   f   =   111231.5585;  BigDecimal   b   =   new   BigDecimal(f);  double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();  保留两位小数  --------------------------------------------------------------- 方式二

c#保留小数点后位数的方法

http://www.cnblogs.com/furenjun/archive/2010/07/13/1776484.html Double dValue = 95.12345; int iValue = 10000;            string strValue = "95.12345";            string result = ""; result = Convert.ToDouble(dValue).ToString("0.00

C#保留小数点后几位

String.Format("{0:N1}", a) 保留小数点后一位 String.Format("{0:N2}", a) 保留小数点后两位 String.Format("{0:N3}", a) 保留小数点后三位 C#保留小数位N位四舍五入 double s=0.55555; result=s.ToString("#0.00");//点后面几个0就保留几位 C#保留小数位N位四舍五入 double dbdata = 0.55

java.math.BigDecimal保留两位小数,保留小数,精确位数

http://blog.csdn.net/yuhua3272004/article/details/3075436 使用java.math.BigDecimal工具类实现 java保留两位小数问题: 方式一(四舍五入形式保留两位小数,注意模式ROUND_HALF_UP): 四舍五入   double   f   =   111231.5585;   BigDecimal   b   =   new   BigDecimal(f);   double   f1   =   b.setScale(2

Money类型转化为String去除小数点后0解决方法

Money类型转化为String去除小数点后0从数据库提取Money类型后,字符串如:1212.0000 如何使其成为1212             注:去掉了小数点 如果是:1212.0100 使其成为   1212.01 难道要循环截取   有没有简单的方法 我要在Gridview中用到------解决方案--------------------double i = 1.1111; string s = i.ToString( "0.00 "); ------解决方案------

oracle 保留小数位

方法一:使用to_char的fm格式 to_char(round(data.amount,2),'FM9999999999999999.00') as amount 不足之处是,如果数值是0的话,会显示为.00而不是0.00. 另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”. 解决方式如下: select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) fro