BigInt构造函数:
Number 类型只能安全地表示-9007199254740991 ( -(2^53-1 )) 和9007199254740991( 2^53-1 )之间的整数
JS 提供 Number.MAX_SAFE_INTEGER 常量来表示 最大安全整数, Number.MIN_SAFE_INTEGER 常量表示最小安全整数:
不能使用严格相等运算符将 BigInt 与常规数字进行比较,因为它们的类型不同:
与 BigInt 操作数一起使用时,算术运算符应该返回 BigInt 值。因此,除法 (/) 运算符的结果会自动向下舍入到最接近的整数。例如:
BigInt和Number 执行算术计算,首先需要确定应该在哪个类型中执行该操作。为此,只需通过调用 Number()或BigInt() 来转换操作数:
当 Boolean 类型与 BigInt 类型相遇时, BigInt 的处理方式与 Number 类似,换句话说,只要不是 0n ,BigInt就被视为 truthy 的值:
位操作符如 |、&、<<、>>和^ 对 Bigint 的操作方式与 Number类似 。下面是一些例子
不能使用 Number 和 BigInt 操作数的 混合执行算术运算 ,需要通过显式转换其中的一种类型。 此外,出于兼容性原因,不允许在 BigInt 上使用一元加号 (+) 运算符。
function isNumber(val) {
let result = /^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$/.test(val)
return result
}
function numberFixed(val,n=2) {
if(isNumber(val)){
let str = val + ''
if(str.includes('.')){
let arr = str.split('.')
let result = arr[0] + '.' + arr[1].substring(0,n)
return Number(result)
} else{
return Number(val)
}
return Number(str.substring())
}else{
return val
}
}
numberFixed(0.2,6)//0.2
numberFixed('0.643') //0.64
numberFixed(240.3536363625,6)//240.353636
numberFixed('hello') // hello