黑马程序员技术交流社区
标题:
数值相减 的问题
[打印本页]
作者:
一个人旅行
时间:
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