js 的舍入误差

0.1 + 0.2 = 0.30000000000000004; 浮点型数据

理解:

     1.  0.1 0.2在计算机语言中会转换为二进制语言

         console.log(0.1.toString(2));  //   "0.0001100110011001100110011001100110011001100110011001101"

      console.log(0.2.toString(2));  //    "0.001100110011001100110011001100110011001100110011001101"

     2.  在计算 0.1 + 0.2 的时候会进行 二进制 =》十进制 的转换,此时会出现色入误差的情况,有一部分数据在精度上被丢失掉

          0.1 => 0.0001100110011001    0.2 => 0.0011001100110011001  就会出现不等于0.3 的情况

 解决:

    1.  console.log(parseFloat((0.1+0.2).toFixed(2)));    //  0.3

    2.  console.log(( 0.1*100 + 0.2*100 ) / 100);  // 0.3

    3.. Math.js   decimal.js   big.js  使用类库

posted @ 2021-03-16 09:09  等风来灬  阅读(120)  评论(0编辑  收藏  举报