Oracle中的to_char(round(值,5),‘fm99990.00000000‘)转换为java方式实现

在java开发中碰到了oracle中的to_char(round(值,5),‘fm99990.00000000‘)的表现形式,需要进行java的转换。

select to_char(round(111.123456,5),‘fm99990.00000000) from dual;
输出结果: 111.12346000

其中
round(111.123456,5) : 表示给111.123456值四舍五入取5位
fm:如果是由于9的作用所带来的空格则删除
9:该位存在数字则显示数字,不存在则填充空格
0:该位存在数字则显示数字,不存在则填充0
99990:表示小数点前最多表示五位(9和0一共有几个就表示几位)
.00000000表示小数点后保留8位,不够的位数用0补齐
转换为java方法实现方式如下:

 public static  String dataTrans(String data){
    //假设保留6位整数,8位小数
	String pattern = "0000000.00000000";
	DecimalFormat  df = new DecimalFormat(pattern); 
    BigDecimal   bd = new BigDecimal(data); 
    //RoundingMode.HALF_UP 表示四舍五入,以下程序中,保留5位小数
    String roundValue =   df.format(bd.setScale(5, RoundingMode.HALF_UP));  
    //如果不加上下面这行,.前面的前导0不会删除,eg:000000.12341000,加上之后就输出0.12341000
    DecimalFormat df2 = new DecimalFormat("0.00000000"); 
    Double d = Double.parseDouble(roundValue);
    return df2.format(d);
  }
}

使用的时候直接调用dataTrans()方法,传入
string类型的字段即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoEchoJava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值