问题描述
我想将一个数字从十进制转换为二进制,我立刻想起 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。在我看来,该方法按预期工作。