十进制到二进制 - 错误的结果

时间:2016-11-02 12:04:04

标签: javascript binary numbers decimal

有问题!为什么这段代码:

let number = 6063311135418901680;
let binary = parseInt(number, 10).toString(2);
console.log(binary);

返回101010000100101001101010101101001010101010100000110010000000000而不是0101010000100101001101010101101001010101010100000110010010110000(假设是正确答案)?我尝试将十进制转换为二进制,但也许我没有得到正确的方法。我知道有很多关于数字的信息,但没有找到任何帮助我。

1 个答案:

答案 0 :(得分:1)

0101010000100101001101010101101001010101010100000110010010110000

不能代表"数字"的变量。在Javascript中有两个原因:

  • 数字不能保持前导零
  • 大于MAX_SAFE_INTEGER的整数通常无法正确表示

这些限制背后的原因是数字存储为IEEE754 double precision floating point numbers。如果您需要更大的整数,请将它们保留为字符串或使用大数字库。