double转int

关于double转int类型,在本来的认知中,以为任何情况强转可以搞定一切,但在实际应用时发现不然,需求是需要从excel表中读出xx.xx这样的数字信息,且需要在此数值*100后作为查询条件去db查询,这就需要精确性了,对于基础小白来讲,还是做个笔记记下吧,先看强转的例子:

        Double a = 2.3 * 100;
        int i = new Double(a).intValue();
        System.out.println(i);

输出结果:229

ok,很明显不是我们要的结果,从上面可以看出,在转换时发生了精度丢失问题,转为int类型会把后面的小数点全部砍掉,不同数据类型转换过程中会有这个问题,原因是计算机是2进制的,针对这种情况的控制方法可以使用DecimalFormat来解决:

new DecimalFormat("0").format(a)

返回的是String类型,控制台输出:230,具体需要保留几位可以通过DecimalFormat来进行设置。

猜你喜欢

转载自blog.csdn.net/weixin_42140580/article/details/86620285