js数据类型BigInt

JavaScript014

js数据类型BigInt,第1张

BigInt 数据类型的目的是比 Number 数据类型支持的范围更大的整数值。

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