黑马程序员技术交流社区

标题: 两个Double相加,小数点有很多位问题 [打印本页]

作者: 张超1    时间: 2018-9-3 21:49
标题: 两个Double相加,小数点有很多位问题
本帖最后由 张超1 于 2018-9-3 21:49 编辑

问题描述:        在我们进行两个double运算时,例如:2..0-1.1 不是想象的输出0.9,而是0.89999999999999999。
原因描述
        原因1.
              其主要原因是浮点数值采用二进制系统表示,而在二进制系统中无法精确的表示分数1/10。这就好像十进制无法精确地表示1/3一样。
               如果需要在数值计算中不含有任何舍入误差
       原因2.
               因为我们计算机cpu运行效率不同,和计算效率不同,在进行十进制和二进制转换的时候会有不同误差,
               所有会出现有些计算机计算结果是我们想要的,有些计算机计算的结果不是我们想要的
解决方案
          在计算金额,等非常精确的数字计算 的时候我们通常使用BigDecimal类!来帮我们解决这个问题









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