问题:当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
结语:有问题可以指正 ,有更好的方法也可以留言,谢谢
版权声明:本文为博主原创文章,转载请附上博文链接!