数字字符串的格式化

    xiaoxiao2021-03-28  35

    在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; } }

    执行一下,看结果

    可以看到 科学计数法的串,被格式化成普通字符串了。

    转载请注明原文地址: https://ju.6miu.com/read-664597.html

    最新回复(0)