JavaScript中大于Math.pow(2, 53)的数,如何进行进制转换?精度问题,超过18位的数字如何进行进制转换?

发布时间 2023-11-02 11:53:46作者: 未来的羁绊
console.log('JavaScript中大于Math.pow(2, 53)的数,如何进行进制转换?')
// 示例
console.group('示例')
console.log('使用bignumber.js库完美解决。[https://github.com/MikeMcl/bignumber.js/]')
console.log('示例:18446744071545290752转为二进制')
console.log("String(new BigNumber('18446744071545290752').toString(2))")
console.log('输出:')
console.log(String(new BigNumber('18446744071545290752').toString(2)))
console.groupEnd()

// 错误写法
console.group('错误写法')
console.log('Math.pow(2, 53)=>', String(new BigNumber(Math.pow(2, 53)).toString(2)))
console.log('Math.pow(2, 54)=>', String(new BigNumber(String(Math.pow(2, 54))).toString(2)))
console.log('Math.pow(2, 53)+1=>', String(new BigNumber(String(Math.pow(2, 53)+1)).toString(2)))
console.groupEnd()

// 正确写法
console.group('正确写法')
console.log('Math.pow(2, 54)=>', String(new BigNumber('9007199254740992').toString(2)))
console.log('Math.pow(2, 53)+1=>', String(new BigNumber('9007199254740993').toString(2)))
console.groupEnd()