JavaScript比较两个数字的大小

一、JS中比较两个数字的大小分三种情况:

1、两个纯数字(Number)比较大小:正常的数学运算。

2、纯数字(Number)与字符串数字(String)比较大小:自动将字符串数字转为纯数字,然后进行纯数字间的比较

3、字符串数字(String)与字符串数字(String)比较大小:会根据第一个不同的字符的ASCII码进行比较

console.log( 21 > 3 );     // true
console.log( '21' > 3 );   // true
console.log( '21' > '3' ); // false
console.log( Number('21') > Number('3') ); // true

所以,在比较数字大小时注意将字符串转换成数字再进行比较。

二、超长数字比较大小

            // 在JS中会存在数字大小操作2的53次方时会精度丢失,末尾几位变成0的情况。
            // JS数字安全长度16位及以下,
            console.log( '16位',  1234567891234567 );    // 1234567891234567
            console.log( '17位',  12345678912345678 );   // 12345678912345678
            console.log( '18位',  123456789123456789 );  // 123456789123456780
            console.log( '19位',  1234567891234567891 ); // 1234567891234568000
            // 精度丢失就会存在数字比较大小不准确的问题,比如:
            let a = '1234567891234567891';
            let b = '1234567891234567899';
            console.log( Number(a) < Number(b) ) // false
            // 超过16位的正整数比较大小的方法:先转成字符串再截取比较大小
            if (a.length > b.length) {
                console.log('a > b');
            } else if (a.length < b.length) {
                console.log('a < b');
            } else {
                const a1 = a.substr(0, 16);
                const a2 = a.substr(16, a.length-16);
                const b1 = b.substr(0, 16);
                const b2 = b.substr(16, b.length-16);
                if (Number(a1) > Number(b1) || (Number(a1) === Number(b1) && Number(a2) > Number(b2))) {
                    console.log('a > b');
                } else if (Number(a1) < Number(b1) || (Number(a1) === Number(b1) && Number(a2) < Number(b2))) {
                    console.log('a < b');
                } else {
                    console.log('a = b');
                }
            }
            // 最后输出结果:a < b

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值