1. 程式人生 > >0.1+0.2!=0.3

0.1+0.2!=0.3

看下面程式碼

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>