【问题标题】:parseInt seems to be wrongparseInt 似乎是错误的
【发布时间】:2021-08-16 04:14:51
【问题描述】:

我想将一个数字从十进制转换为二进制,我立即想起 parseInt 也有一个基本参数,为了确定,我运行了以下代码:

parseInt('123', 2);

输出是... 1?

之后我检查了开发者mozzila,第二个参数是base,然后我尝试了base 3,结果是5!!!!!!这在 base 3 中是不可能的!

我做错了什么???

【问题讨论】:

  • parseInt('123', 10)
  • parseInt 解析字符串直到第一个无效字符。 "2" 是无效的字符基 2。
  • 数字 2 和 3 对于 base-2 数字没有意义
  • 另外,'123' 不是数字;这是一个字符串。如果您想要二进制等价物,请将 '123' 转换为纯 JavaScript 数字,然后使用 .toString(2) 获取您的二进制等价物(作为另一个字符串)。
  • 这两个答案都是正确且有用的……我该怎么办???我无法将它们都标记为正确

标签: javascript binary decimal base parseint


【解决方案1】:

radix 参数表示输入数字的基数,而不是输出数字。

parseInt('1111', 2); // returns 15

来自MDN parseInt()

parseInt(string, radix)

基数

一个介于 2 到 36 之间的整数,表示基数(在 字符串的数学数字系统)。

【讨论】:

  • parseInt('1111011', 2)
【解决方案2】:

输出总是一个整数。如果你真的想使用这种方法,你只能在你的情况下将二进制转换为整数。

因此,如果您尝试: parseInt("10101",2) 结果将是 21。这是正确的。但是在您的情况下,您向方法提供了绝对无效的参数,因为您只能将 0 和 1 用于二进制输入。转换从左到右进行。第一个无效值将强制返回结果,无需进一步计算。

您的第一种情况: parseInt('123',2) 数字 2 是无效的二进制值。这将在 1 作为输入之后完成,这是一个 1 作为整数。没错。

您的第二次尝试: parseInt('123', 3)

最后一个数字 3 对于以 0、1、2 作为有效数字的 3 为底数无效。如果您将数字 12 转换为以 3 为底,则结果为 5。从我的角度来看,该方法按预期工作。

【讨论】:

  • 这是 JavaScript,不是Integer.parseInt(),只是parseInt()
  • 错字。但不管是什么语言 :) 这种方法很有效
猜你喜欢
  • 2019-08-19
  • 2023-03-29
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
相关资源
最近更新 更多