js 的数字精度

js 的数字精度

十二月 08, 2019

数字精度丢失的典型问题

1、两个浮点数相加 (部分浮点数相加导致精度丢失问题)
1
0.1 + 0.2 != 0.3 // true
2、大整数运算
1
2
3
9999999999999999 == 10000000000000001 // true

16位数等于17位数?
3、toFixed()
1
2
3
4
5
6
7
8
9
10
1.335.toFixed(2) (Chrome)
// 1.33

1.334.toFixed(2) (Chrome)
// 1.33

1.336.toFixed(2) (Chrome)
// 1.34

四舍五入,在五这个中间点有问题

数字精度丢失的原因

数字精度丢失的解决方案

1、整数 运算结果不超过 Math.pow(2,53) 就不会丢失精度。

2、小数 把小数乘倍数,操作,再缩小回原来倍数。

Reference

JavaScript数字精度丢失问题总结

  1. 1. 数字精度丢失的典型问题
    1. 1.0.0.1. 1、两个浮点数相加 (部分浮点数相加导致精度丢失问题)
    2. 1.0.0.2. 2、大整数运算
    3. 1.0.0.3. 3、toFixed()
  • 2. 数字精度丢失的原因
  • 3. 数字精度丢失的解决方案
  • 4. Reference