parseInt 似乎是错误的
Posted
技术标签:
【中文标题】parseInt 似乎是错误的【英文标题】:parseInt seems to be wrong 【发布时间】: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)
获取您的二进制等价物(作为另一个字符串)。
这两个答案都是正确且有用的……我该怎么办???我无法将它们都标记为正确
【参考方案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()
。
错字。但不管是什么语言 :) 这种方法很有效以上是关于parseInt 似乎是错误的的主要内容,如果未能解决你的问题,请参考以下文章