0.1+0.2!=0.3

版权声明:三和小钢炮 https://blog.csdn.net/fwx426328/article/details/83900239

看下面代码

double c = 0.1 + 0.2;
System.out.println(c);

还有js中

var c = 0.1 + 0.2;
console.log(c);

结果都是0.30000000000000004
这是由于java和js 采用IEEE二进制浮点数算术标准(IEEE 754)。
浮点型是以二进制为底数的形式存储,导致了差异。

可以采用大数运算解决。
java中解决

BigDecimal a1 = new BigDecimal(String.valueOf(0.1));
BigDecimal b1 = new BigDecimal(String.valueOf(0.2));
BigDecimal c1 = a1.add(b1);
System.out.println(c1);

在js中引用math.js

<script type="text/javascript" src="http://mathjs.org/js/lib/math.js"></script>
<script type="text/javascript">
  var a = math.bignumber(0.1);
  var b = math.bignumber(0.2);
  var bigc = a.add(b);
  var c = math.number(bigc);
  console.log(c);
</script>

猜你喜欢

转载自blog.csdn.net/fwx426328/article/details/83900239