A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张超1 于 2018-9-3 21:49 编辑

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




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马