频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
用Java处理double类型的小数值不准确
2018-05-04 10:03:11      个评论    来源:wjn19921104的博客  
收藏   我要投稿
首先是从Excel里面读数据的时候,Excel里面的数据是数字,太大,其实也不是数字,就是个银行卡号,复制进去,就自动成数字啦,然后就变成科学计数法啦,在使用poi读取数据的时候,读出来的就是科学计数法的数字,tostring之后,就不是我们想要的数据啦,这是一种情况。

还有一种情况,就是Excel里面的小数比如,1.2读出来可能就是1.19999,这个就是double类型的小数的值不准确的问题啦。

说是可以使用BigDecimal类来解决这个问题,但是,这个类要想使用好,也得有一番实践操作的。

先看代码,

[java]view plaincopy
/**
*BigDecimal的测试,要精确。
*还要使得科学计数法的数字,做完全的展示。
*/
privatestaticvoidtestBigDecimal(){
Doubled=1.6D;
//不准确的初始化
BigDecimalbigDecimal=newBigDecimal(d);
System.out.println(bigDecimal);

//使得结果精确的初始化姿势
bigDecimal=newBigDecimal(d.toString());
System.out.println(bigDecimal);

bigDecimal=newBigDecimal("6.214822313132341212666E+18");
System.out.println(bigDecimal.toPlainString());
}

  1. 再看下运行的结果。

    \

    可以看到差别了吗?

    可以看到,这个构造函数传进去的参数类型不同,出来的结果,就很不一样。

    所以,咱在使用这个类的时候,还是传个字符串类型的参数进去,这样就稳当点。

    这样就解决啦,double类型的小数的不准确性的问题,不用去考虑,到底精确几位小数的问题。同时,还把科学计数法的数字,给格式化成OK的字符串来展示。

     

    最后,就是为啥把这篇文章分在poi的分类里面,因为就是在读取Excel文档的数据的时候,发现的问题。

    它读取每个cell的时候,会根据cell的类型不一样,获得的值也不一样。

    还有就是,要是数字的话,他竟然还有科学计数法的问题,以及小数值不准确的问题,比如1.6,读出来可能就是1.59999

    下面是获取 cell的值的方法

    [java]view plaincopy
    
    
    /**
    *获取单元格数据内容为字符串类型的数据
    *
    *@paramcellExcel单元格
    *@returnString单元格数据内容
    */
    publicstaticStringgetCellStringValue(HSSFCellcell){
    StringstrCell;
    switch(cell.getCellType()){
    caseHSSFCell.CELL_TYPE_STRING:
    strCell=cell.getStringCellValue();
    break;
    caseHSSFCell.CELL_TYPE_NUMERIC:
    Doublevalue=cell.getNumericCellValue();
    BigDecimalbd1=newBigDecimal(Double.toString(value));
    strCell=bd1.toPlainString();
    break;
    caseHSSFCell.CELL_TYPE_BOOLEAN:
    strCell=String.valueOf(cell.getBooleanCellValue());
    break;
    caseHSSFCell.CELL_TYPE_BLANK:
    strCell="";
    break;
    default:
    strCell=null;
    break;
    }
    returnstrCell;
    }重点就是当是数字类型的时候,就需要好好处理一下啦。不然,读取出来的数字要么是科学计数法,要么就是已经失去准确性的小数啦。
点击复制链接 与好友分享!回本站首页
相关TAG标签 计数法 数字 数值
上一篇:主流Java数据库连接池比较及前瞻
下一篇:使用java来编写一个易车网车型属性的爬虫
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站