今天发现0.1 + 0.2 === 0.3 竟然是false
原来是精度的问题 下面是笔记 有兴趣的可以看一下
// 0.Number.EPSILON 是javaScript 的最小精度
// EPSILON的值接近于2.220446049250313e-16
console.log(0.1 + 0.2) // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3) // false
// 这个当然是不符合我们常规认识的 但是我们可以借助Number.EPSILON解决
console.log(Number.EPSILON) // 2.220446049250313e-16
console.log(Math.abs(0.1+0.2-0.3) < Number.EPSILON) // true
// 声明函数判断两个数值是否相等
function calculation(a, b) {
if (Math.abs(a-b) < Number.EPSILON) {
return '相等'
} else {
return '不相等'
}
}
console.log(calculation(0.1 + 0.2, 0.3)) // 相等
// 1. Number.isFinite 检测一个数值是否是有限数
console.log(Number.isFinite(100)) // 有限 true
console.log(100/0) // Infinity
console.log(Number.isFinite(100/0)) // 无限 false
console.log(Number.isFinite(Infinity)) // 无限 false
// 2. NUmber.isNaN 检测这个数值是否是NaN
console.log(Number.isNaN(123)) // false
// 3. Number.parseInt Number.parseFloat 字符串转换为整数
console.log(Number.parseInt('787878.8884pppppp')) // 787878
console.log(Number.parseFloat('8.888888八八八')) // 8.888888
// 4. Number.isInterger 判断数字是否是整数
console.log(Number.isInteger(2)) // true
console.log(Number.isInteger(2.5)) // false
// 5. Math.trunc 将小数部分抹除
console.log(Math.trunc(23.999999999)) // 23
console.log(Math.trunc(23.000000001)) // 23
// 6. Math.sign 判断一个数字是正数 负数 还是0
console.log(Math.sign(100)) // 1
console.log(Math.sign(0)) // 0
console.log(Math.sign(-100)) // -1