正在召唤神秘力量
导航

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

JS十进制大整数转十六进制字符串 预防精度缺失

作者:广树·时间:2018-07-23 14:39:53·分类:JavaScript/jQuery/Vue

因为JS的精度缺失导致大整数在十六进制转换上也会有精度确实。

例如:

Number('999999999999999999').toString(16)
"de0b6b3a7640000"


0xde0b6b3a7640000 = 1000000000000000000

这个时候可以先用以前文章提到过的大整数字符串运算来得出数字字符串,然后再通过下面的方法来转换成十六进制字符串。

function dec2hex(str){ 
    var dec = str.toString().split(''), sum = [], hex = [], i, s
    while(dec.length){
        s = 1 * dec.shift()
        for(i = 0; s || i < sum.length; i++){
            s += (sum[i] || 0) * 10
            sum[i] = s % 16
            s = (s - sum[i]) / 16
        }
    }
    while(sum.length){
        hex.push(sum.pop().toString(16))
    }
    return hex.join('')
}

例子:

dec2hex('999999999999999999')
"de0b6b3a763ffff"

代码转自:stackoverflow

相关文章:《预防JS精度丢失之字符串除以n个0 与 整数数字用字符串相加 的解决方案JS大整数(字符串)相乘与字符串乘以n个0 | 预防JS精度丢失 | JS字符串乘法

侧边栏
最新评论
广树
2024-05-08
@老张博客:是的,不仅仅是大城市,很多小乡村也是依靠动漫发展起来的旅游产业,所以不要小看文化产业带来的经济价值啊!
老张博客
2024-05-08
到日本 是不是大街小巷都是这些动漫呀!
广树
2024-05-08
@Chise Hachiroku:不是还有,而是最近出来的新服务🤭。送货时间太迟了,不是急需的话还是一般配送比较好。
广树
2024-05-08
@Chise Hachiroku:欢迎来到腾讯认证的维基萌👍
Chise Hachiroku
2024-05-08
哇 这个服务日本还有啊! 英国去年还有有这个东西,今年没了。因为各种各样的原因,一直保持着会员,然后下单过一次当日达,是下午一点截止、22点前到的。 送东西来的是开车的,看标签是附近的DXM2出货以后,开车送货的Amazon Flex外包。但是没有再使用过,因为时间真的很不固定,周边人有下午两点到,也有十一点以后到的,不如第二天去自提柜。
正在攻略

圣兽之王.jpg

传颂之物

PSN奖杯卡

PSN奖杯卡

赞助商广告