在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类型的字段即可。