parseInt 好像错了

问题描述

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

parseInt('123',2);

输出是... 1?

之后我检查了 developer mozzila,第二个参数是基数,然后我尝试了基数 3,输出是 5!!!!!!这在 base 3 中是不可能的!

我做错了什么???

解决方法

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

"redraw"

来自MDN parseInt()

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

基数

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

,

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

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

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

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

最后一个数字 3 对于以 3 为基数的 0,1,2 作为有效数字无效。如果以 3 为基数转换数字 12,结果为 5。在我看来,该方法按预期工作。