黑马程序员技术交流社区

标题: 数值相减 的问题 [打印本页]

作者: 一个人旅行    时间: 2013-12-23 22:20
标题: 数值相减 的问题
class Test
{
        public static void main(String [] args)
        {
                System.out.println(2.0-0.1);//1.9
                System.out.println(2.0-1.1);//0.8999999999999999
        }
}
这是为什么呢?
作者: 夏德宇    时间: 2013-12-23 22:29
浮点数值0.899999999999999999表示0.9,如果需要在计算中不含义任何舍入误差,应该使用BigDecimal类。查的
作者: 熊志伟    时间: 2013-12-23 22:49
       这与计算机的存储方式有关,浮点运算很少是精确的,只要是超过精度能表示的范围就会产生误差。往往产生误差不是因为数的大小,而是因为数的精度。因此,产生的结果接近但不等于想要的结果。尤其在使用 float 和 double 作精确运算的时候要特别小心。可以考虑采用一些替代方案来实现。如通过 String 结BigDecimal 或者通过使用 long 类型来转换。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2