黑马程序员技术交流社区

标题: 一个算术问题 [打印本页]

作者: 闵云波    时间: 2013-6-20 18:21
标题: 一个算术问题
执行结果为什么不是0.90和1.00

捕获.JPG (20.76 KB, 下载次数: 0)

执行结果

执行结果

作者: msileandroid    时间: 2013-6-20 18:23
源代码呢?{:3_47:}
作者: 闵云波    时间: 2013-6-20 18:23
代码是
  1. public class Demo {

  2.        
  3.         public static void main(String[] args) {
  4.                 System.out.println(2.00-1.10);
  5.                 System.out.println(2.11-1.11);
  6.         }

  7. }
复制代码

作者: msileandroid    时间: 2013-6-20 18:38
首先两个double相减最后还是double类型;
double是有精确度的  不能保证准确的
出现这种问题的原因是浮点数值是采用二进制系统表示的,而在系统中无法精确的表示分数1/10。
如果需要在计算中不含有任何舍入误差,应使用BigDecimal类。
作者: pys200603027    时间: 2013-6-22 11:17
(1)这是计算机二进制运算精度损失问题
(2)使用BigDecimal类可以达到高精度运算




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