java 解决科学计数法问题

问题:当java从excel获取数据后,会出现科学计数法,比如0.0004变成4.0E-4,5000变成5E+3问题.
解决:1:当是5E+3问题

这个很好解决:
     1).判断是否是科学计数法  
     		String str="5E+3";
            Pattern pattern = Pattern.compile("(-?\\d+\\.?\\d*)[Ee]{1}[\\+-]?[0-9]*");
            boolean isMache=pattern.matcher(String .trim()).matches();//判断是否是科学计数法  true是科学计数法,false不是科学计数法
    2) .转化成带0正数存到数据库即可                  
            DecimalFormat ds = new DecimalFormat("0");
            cell= ds.format(Double.parseDouble(cell.trim())).trim();

2.当是4.0E-4问题

负数上边方法并不能实现,所以用BigDecimal实现
   1).转成BigDecimal
          String str="4.0E-4";
          str=new BigDecimal(str.trim()).toString();
   2).最后会出现一个0,比如0.00040,所以要把0去掉(如果你感觉没关系也可以不用管)
    	  String lastOneNum = str.substring(str.length() - 1);//获取小数最后一位0
    	  去除最后一个多余0
      	  str= str.length() > 1 && cell.contains(".") &&  lastOneNum.equalsIgnoreCase("0") ? str.substring(0, str.length() - 1):str;//去除小数最后一位0

结语:有问题可以指正 ,有更好的方法也可以留言,谢谢

版权声明:本文为博主原创文章,转载请附上博文链接!

上一篇:java从字符串中提取数字


下一篇:js重写实现trim 方法