在java开发,常遇到数字的字符串,想把它格式化成自己想要的,比如想保留小数点后两位,还要考虑四舍五入,那么我们该如何处理,参考如下代码
一、 数字串小数点位数的格式化
/ * 数字小数位格式化
* @title:
* @author
* @description:
* @date 2015-11-05 am 11:36:45
* @param value 需要被格式化的数字
* @param index 指定的小数位数
* @return
* @throws Exception
*/
private String numberformate(String value,int index){
double d = Double.valueOf(value);
// System.out.println(d);
DecimalFormat df = null;
switch(index){
case 0 : df = new DecimalFormat("######0");break;
case 2 : df = new DecimalFormat("######0.00");break;
case 3 : df = newDecimalFormat("######0.000");break;
case 4 : df = newDecimalFormat("######0.0000"); break;
default : df = new DecimalFormat("######0.00");
}
value =df.format(d);
// System.out.println(value);
return value;
}
比如,我们现在需要格式化一个带小数点后2位的数字,想格式化成小数点后两位,那么执行一下 看结果如何?
执行结果为 5002.57 执行前为 5002.567 实现 了格式化的要求,保留两位小数(四舍五入)
上述参考方法,可以支持保留小数点2到4位,默认保留两位。读者可以按自己的实际需求进行改造成自己想要的。
二、数字串百分比格式化
当我们遇到一个数字长串(带小数点) 想格式化成 百分比格式,并且对小数点位数要有求时(保留位数时要四舍五入)那么该怎么处理,参考代码如下:
/**
* 百分号数字格式化 比如 0.1241503403783557 格式化成 12.42%
* @title:
* @author xinyaoli
* @description:
* @date 2015-11-05 am 11:36:45
* @param value 需要被格式化的数字
* @param index 指定的小数位数
* @return
* @throws Exception
*/
private String percentformate(String value,int index){
double d = Double.valueOf(value);
// System.out.println(d);
d = d*100;
DecimalFormat df = null;
switch(index){
case 2 : df = new DecimalFormat("######0.00"); break;
case 3 : df = new DecimalFormat("######0.000");break;
case 4 : df = new DecimalFormat("######0.0000"); break;
default : df = new DecimalFormat("######0.00");
}
value = df.format(d);
value = value+"%";
// System.out.println(value);
return value;
}
传入被格式化的数字串,希望格式化成百分比串,并且保留两位小数,执行方法,显示结果
我们看到,显示结果为 12.42% 符合预期,该方法支持格式化成分百比串,小数点保留2、3、4位,读者可以按自己需求改造成满足自己需求的方法。
三、科学计算法格式化
当我们遇到一些科学计数法的字符,比如1.0020725E7 (在导入excel文件时,由于单元格格式问题,会遇到这种情况),我们不想显示成这样,想把科学计数法显示成正常的数字串时,可以参考以下代码
/**
* 将有科学计数法的数字转成字符串 1.0020725E7 转成 10020725
* @param value
* @return
* @throws Exception
*/
private String matchStrToString(String value) throws Exception{
if(value == null || "".equals(value)){
return value;
}
if(value.indexOf(".") != -1){
BigDecimal bd = new BigDecimal(value);
value = bd.toPlainString();
return value;
}else{
return value;
}
}
执行一下,看结果
可以看到 科学计数法的串,被格式化成普通字符串了。