# toSafeInteger
# Description
转换 value 为安全整数。 安全整数可以用于比较和准确的表示。
# Params
value
# Return
Number
# Depend
import toInteger from './toInteger.js'
# Code
const MAX_SAFE_INTEGER = 9007199254740991
function toSafeInteger(value) {
if (!value) {
return value === 0 ? value : 0
}
value = toInteger(value)
if (value < -MAX_SAFE_INTEGER) {
return -MAX_SAFE_INTEGER
}
if (value > MAX_SAFE_INTEGER) {
return MAX_SAFE_INTEGER
}
return value
}
# Analyze
首先判断了 value
为假值的情况,这里 value === 0 ? value : 0
,是为了处理 +0
和 -0
的情况,在三等中 +0
和 -0
都等于 0
,所以这里不改变符号,返回 -0
通过 toInteger
将 value
转为一个整数
如果 小于 -9007199254740991
,则返回 -9007199254740991
,大于 9007199254740991
则返回 9007199254740991
# Remark
- Number.MAX_SAFE_INTEGER MDN (opens new window) 常量表示在 JavaScript 中最大的安全整数(maxinum safe integer)。
# Example
console.log(toSafeInteger(1.333)) // 1
console.log(toSafeInteger(-234.33)) // -234
console.log(toSafeInteger(-2.43435e100)) // -9007199254740991