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 似乎是错误的的主要内容,如果未能解决你的问题,请参考以下文章

当map遇到parseInt

java中parseInt()和valueOf()的区别?

Number与parseInt的区别

Android App 在第 54 行(Integer.parseInt)崩溃,不完全确定原因

javascript中parseInt函数的用法

Js中的天坑----JS:parseInt("08")和“09”返回0