其他分享
首页 > 其他分享> > js 超级大数比较大小 (位数超过16位)

js 超级大数比较大小 (位数超过16位)

作者:互联网

javascript中比如int类型数值最大有效精度位数是16位,超过16位时就会四舍五入到前16位的精度,所以大于16位数字是无法比较大小的,故而只能封装独立的比较方法:

/**
* 数值大小比较 -- 支持超过16位数
* @param min{string}: 要比较的数
* @param max{string}: 目标数
**/
function isLessThan(min, max) {
    var max = max + '',
        num = min + '',
        bool = true,
        list = [];

    if(num.length > max.length || isNaN(num)) {
        bool = false;
    }

    if(num.length == max.length) {
        for(var i = 0;i < max.length; i++) {
            var isBig = max[i] - num[i] >= 0;
            
            list.push(max[i] - num[i] > 0);// 记录各个位置数值是否存在小于的情况

            if(!isBig) {
                // 但出现当前位置数值大于时,判断是否存在高位置数小于的情况
                var some = list.filter(function(item){ return item == true;});
                
                if(some.length == 0) {
                    bool = false;
                    break;
                }
            }
        }
    }

    return bool;
}

 

测试:

 

标签:大数,max,16,js,length,num,bool,var
来源: https://www.cnblogs.com/xtreme/p/16267620.html