导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
最新评论
老张博客
2025-11-27 21:08
我也好奇。。
广树管理员
2025-11-26 20:23
@Mimosa:嘻嘻,是的
Mimosa
2025-11-26 19:43
好好好 ,刚逛完十周年展又去圣地巡礼,太及时了w
广树管理员
2025-11-25 08:59
@ArcMeteor:一起好奇
ArcMeteor
2025-11-25 08:57
我也...很好奇
攻略中
魔法少女的魔女审判
暂无评分
Steam魔法少女的魔女审判
2025年11月27日 22时 ~ 攻略中
已累计游玩12小时
迎接少女们的,是一场残酷的死亡游戏……在即将来临的“魔女审判”中,打破魔法和谎言的幻影,揪出混入少女之中的“魔女”吧。这部最新的魔法辩论×悬疑ADV作品,由日本原创品牌“Acacia”为您呈献。
全民高尔夫环球之旅
暂无评分
Steam全民高尔夫环球之旅
2025年9月07日 12时 ~ 攻略中
已累计游玩2个月21天
《全民高尔夫 环球之旅》除了能体验到与过去作品相同的乐趣、爽快与深奥之外, 还有着以精美图像设计而成、个性丰富的角色们与以世界各地为主题的球场, 以及能让所有人热血沸腾的全新模式等等,是本系列的全新力作!
ToHeart
暂无评分
SteamToHeart
2025年6月26日 19时 ~ 攻略中
已累计游玩5个月4天
AQUAPLUS推出的“温暖人心的校园恋爱游戏”将以高清全3D形式焕新归来!
fault - StP - LIGHTKRAVTE
暂无评分
Steamfault - StP - LIGHTKRAVTE
2025年5月29日 20时 ~ 攻略中
已累计游玩6个月2天
全球累计销量超过50万份的“fault”系列最新作!故事的舞台是一个融合了奇幻与科幻的超前世界——卢森海德王国。本作讲述了生活在此地的一个平凡又平庸的究极普通市民——名为果子的少年的故事。
PSN奖杯卡

PSN奖杯卡

归档
赞助商广告

JS大整数(字符串)减法 | 预防JS精度丢失

作者:广树时间:2018-08-02 09:38:49分类:JavaScript

一般情况下JS使用数字运算比较大的大整数:

10000000000000000 - 1 = 10000000000000000

所以这里还是要用字符串去运算比较大的正整数

function minus(a, b){//字符串减法
    a = a.split('');
    b = b.split('');
    var aMaxb = a.length > b.length; // 标记A是否大于B
    if(a.length == b.length)
    {
        for(var i=0, len=a.length; i<len; i++)
        {
            if(a[i] == b[i]) continue;
            aMaxb = a[i] > b[i];
            break;
        }
    }
    if(!aMaxb){
        a = [b, b = a][0]; // 只要A不比B大都交换
    } 
    var result = '';
    while(a.length)
    {
        var temp = parseInt(a.pop()) - parseInt(b.pop() || 0);
        if(temp >= 0) {
            result = temp + result;
        } else{
            result = temp + 10 + result;
            a[a.length-1]--; // 由于已经保证了a一定大于等于b,所以不存在a[i-1]为undefined的情况
        }
    }
    var resultEnd = (aMaxb?'':'-') + result.replace(/^0*/g, '');// 去掉前面可能的无效0
    if(resultEnd === '-'){
        resultEnd = '0'
    }
    return resultEnd; 
}

例:

minus('10000000000000000000000', '1')
"9999999999999999999999"

minus('1', '2')
"-1"

minus('1', '1')
"0"

修改自:大整数的加减法运算(JavaScript版)

相关文章:JS大整数(字符串)相乘与字符串乘以n个0 整数数字用字符串相加

donate.png


telegram banner (1).png


1210 x 50(蓝底).png

cloudcone