欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 解决科学计数法问题

程序员文章站 2024-03-16 09:01:28
...

问题:当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");
            str= ds.format(Double.parseDouble(str.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 && str.contains(".") &&  lastOneNum.equalsIgnoreCase("0") ? str.substring(0, str.length() - 1):str;//去除小数最后一位0

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

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