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