使用最小精度值计算浮点数

Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON; //true

:::success Number.EPSILON 表示1与大于1的最小浮点数之间的差值。即代表着JavaScript能表示的最小精度范围
当左边减去右边小于最小精度范围时,代表着处于可接受的误差范围内,所以可以判定相等 :::

js大数

9007199254740995 === 9007199254740996 // true

:::info js中最大数值范围为 -2^53+1 ~ 2^53 - 1 ,也就是 9007199254740991. 超出这个范围的数值就会出现进度问题,于是就会出现上面那个情况。 :::

与零相关的计算

0/0 // NaN 1/0 // Infinity 1/-0 // -Infinity -1/0 // -Infinity -1/-0 // Infinity

:::success 在js中零当除数并不会报错,而且正零和负零是两个不同的数值

  • 正数除以正零时,结果会得到正无穷
  • 负数除以正零时,结果会得到负无穷
  • 正数除以负零时,结果会得到负无穷
  • 负数除以负零时,结果会得到正无穷
  • 零除以零时,会得到NaN :::

1.toString()错误

1.toString() // Uncaught SyntaxError: Invalid or unexpected token

:::success 在js中 整数数值后接. 会被认为是整数的小数点 也就是1. 会被解析为 1.0
1.toString() 因为.属于数字,所以这段会被当成字符串变量处理, 字符串变量不能以数字开头,所以会报错 ::: 解决方法: 1..toString()

010的异常解析

010 // 8

:::success 在js中,以零开头的数字,且没有大于8的数字,那么js会将该数字解析为八进制 :::