导航

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

侧边栏
热门文章
1推文
我很好奇
热度
699
2页面
程序员老黄历&求签
热度
611
3推文
其实我是来《摇曳露营》圣地巡礼的。
热度
343
4推文
买了点雏见泽的土特产
热度
337
5推文
今天的雏见泽依旧很和平。
热度
156
6推文
发现《摇曳百合》联动交通安全宣传海报。
热度
143
7推文
大约用了1个月,通过投影仪通关了《交响乐之雨》。 作为一部20年前的氛围作,现在玩起来也完全不过时。 由冈崎律子亲自操刀的音乐是这部游戏的最大亮点。每位可攻略对象都有自己独自的主题曲,特色鲜明且非常动听,如果有兴趣的话可以在各大网站搜索试听。 此次作画是由《向山进发》的作者しろ负责。我买的是20周年版,所以立绘是重置的。对于是旧版立绘好看还是新版立绘好看,我个人觉得各有特色。同时也能看到しろ老师这20年来的画风变化。 剧情方面,确实是有亮点。尤其是回收伏笔的时候,我以为我看穿了全部,但其实只看到了一半,这一刻我感受到了这可能是一部神作?然而我得知所有谜底后,回过头重新看真结局的时候却又感觉到了真结局收尾的草率,产生了一定的失落感。 总的来说这部游戏的氛围感确实很强,至今脑海里还能浮现游戏里的雨声和音乐。但是剧情方面个人觉得不管是哪条线收尾都有些草率,有点可惜。但不影响我推荐这部作品。 Steam链接:https://store.steampowered.com/app/629650/Symphonic_Rain/ 游戏OP:https://www.bilibili.com/video/BV16J411D7e7
热度
143
8博文
实现躺平自由!胶囊型投影仪Anker Nebula Capsule 3 Laser使用体验
热度
143
9博文
探访《蜡笔小新》老家——春日部游记
热度
104
10博文
《摇曳露营△》十周年纪念展
热度
91
最新评论
广树管理员
2025-11-24 18:18
@九日:音乐至今还在我的脑海中回荡
九日
2025-11-24 18:17
听过这个游戏的纯音乐,现在也收藏了这个游戏(最近疯狂收集galgame中,不知道什么时候会玩hh),看评分非常高呢,等有兴致了会来推这个
广树管理员
2025-11-24 18:15
@九日:买起来!
九日
2025-11-24 18:15
(☆ω☆)完啦本来压下去的购买欲望看了后又提起来了
Zrzzz
2025-11-24 16:55
@广树:( ʚ̴̶̷́ .̠ ʚ̴̶̷̥̀)不攀比…会去的!
攻略中
全民高尔夫环球之旅
暂无评分
Steam全民高尔夫环球之旅
2025年9月07日 12时 ~ 攻略中
已累计游玩2个月18天
《全民高尔夫 环球之旅》除了能体验到与过去作品相同的乐趣、爽快与深奥之外, 还有着以精美图像设计而成、个性丰富的角色们与以世界各地为主题的球场, 以及能让所有人热血沸腾的全新模式等等,是本系列的全新力作!
ToHeart
暂无评分
SteamToHeart
2025年6月26日 19时 ~ 攻略中
已累计游玩5个月1天
AQUAPLUS推出的“温暖人心的校园恋爱游戏”将以高清全3D形式焕新归来!
fault - StP - LIGHTKRAVTE
暂无评分
Steamfault - StP - LIGHTKRAVTE
2025年5月29日 20时 ~ 攻略中
已累计游玩5个月29天
全球累计销量超过50万份的“fault”系列最新作!故事的舞台是一个融合了奇幻与科幻的超前世界——卢森海德王国。本作讲述了生活在此地的一个平凡又平庸的究极普通市民——名为果子的少年的故事。
PSN奖杯卡

PSN奖杯卡

归档
赞助商广告

预防JS精度丢失之字符串除以n个0 与 整数数字用字符串相加 的解决方案

作者:广树时间:2018-07-05 12:31:41分类:JavaScript

因为JavaScript精度丢失的问题,经常会出现一些骚操作,例如:

999900000000630000/1000000000000000000

返回结果:0.9999000000006301

迷之多了01

这时候换个角度思考,不用数学运算,改为字符串操作,比如上面的例子是除以18个0就是向前挪18位加个小数点。

那么直接丢代码:

function stringAddPoint(num,s){
    var l = num.length;//获取字符串长度
    var res = '';
    if(l==(s+1)){
        res = num;
        res = res.slice(0,1) + '.' + res.slice(1);;
    }else if(l<(s+1)){
        var zero = '';
        while(s - l !== zero.length){
        zero = zero + '0';
        }
        res = '0.'+zero+num;
    }else if(l>=(s+1)){
        var a = l-s;
        res = num;
        res = res.slice(0,a) + '.' + res.slice(a);
    }
    //去多余的0
    var res_ = res;
    for(var i=0;i<res_.length;i++){
        if(res_[res_.length-1-i]=='0'){
           res = res_.slice(0,res_.length-1-i);
        }else if(res_[res_.length-1-i]=='.'){
           res = res_.slice(0,res_.length-1-i);
           break
        }else{
           break
        }
    }
    return res;
}

stringAddPoint('999900000000630000',18)
"0.99990000000063"

另外JS在大数字计算的时候也容易出现精度缺失,例如:

99999999999999999+5
返回结果:100000000000000000
同样这里也可以用字符串的方法进行相加,代码如下:

function sumStrings(a,b){
    var res='', c=0;
    a = a.split('');
    b = b.split('');
    while (a.length || b.length || c){
        c += ~~a.pop() + ~~b.pop();
        res = c % 10 + res;
        c = c>9;
    }
    return res.replace(/^0+/,'');
}

sumStrings('99999999999999999','5')
"100000000000000004"


相关文章:JS大整数相乘与字符串乘以n个0 | 预防JS精度丢失 | JS字符串乘法

donate.png


telegram banner (1).png


1210 x 50(蓝底).png

cloudcone