版权声明:三和小钢炮 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>