数字字符串的格式化

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


执行一下,看结果


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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

景天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值