首页 > 解决方案 > Number.prototype.toString() 因大数而损坏

问题描述

我想将整数转换为具有特定基数的数字。在这种情况下,它是 36。

因此,正如文档所述,我这样做了myNumber.toString(36)

结果如下:

console.log((12345678901234566).toString(36));
console.log((12345678901234567).toString(36));
console.log((12345678901234568).toString(36));
console.log((12345678901234569).toString(36));
console.log((12345678901234570).toString(36));
console.log((12345678901234571).toString(36));

如您所见,由于输出不是唯一的,因此有些问题。

根据我的发现Number.MAX_SAFE_INTEGER = 9007199254740991,我的数字超过了这个值,所以我相信这就是它被区别对待的原因

遗憾的是,文档中的任何地方都没有说明存在一些界限。也许这是常识,我不知道。

任何想法如何解决这个问题以获得更大的数字?

我可以看到它在这里被错误地实现(如我的例子)并且在这里正确但我不知道它背后的逻辑。

标签: javascript

解决方案


推荐阅读