如何解决Number.parseInt(input, 2);输入为十进制时不显示 2 后的二进制值
这是代码:
var input = prompt("Enter a decimal value");
console.log(input +" the binary value would be:",Number.parseInt(input,2));
1 和 2 的输出是正确的,但从 3 开始它显示 NaN。
它适用于以下代码:
var input = Number(prompt("Enter a decimal value"));
console.log(input +" the binary value would be:",input.toString(input,2));
我想知道为什么它不适用于第一个代码。
解决方法
首先,您要转换为二进制的方式是不对的。您可以使用 input.toString(2)
将十进制转换为二进制。但在此之前,您必须将输入转换为数字,因为提示将返回一个字符串。
您可以执行以下操作,
var input = parseInt(prompt("Enter a decimal value"));
console.log(input +" the binary value would be:",input.toString(2));
如果 parseInt 遇到一个不是数字的字符 指定的基数,它忽略它和所有后续字符和 返回解析到该点的整数值。
然后,
如果第一个字符不能转换为带基数的数字 在使用中,parseInt 返回 NaN。
任何包含除零或一个以外的任何内容作为第一个字符的字符串都将返回 NaN
。
所以输入 11111 或 101010101 可以,但 2 或 3 或 333 不行。
,你的两段代码或多或少彼此相反。
Number.parseInt(input,2)
... 期望 input
是一个包含二进制数的字符串,它会将其转换为 JavaScript 数字。
如果您键入 2
,则它不是有效的二进制数(只有 0
和 1
。
input.toString(input,2)
……只是错了
input.toString(2)
... 期望 input
是一个 JavaScript 数字,并将其转换为一个包含十进制表示的字符串。
比较:
console.log("Parse binary numbers");
console.log(Number.parseInt("1",2));
console.log(Number.parseInt("10",2));
console.log(Number.parseInt("3",2));
console.log("Convert numbers to binary");
console.log(1.0.toString(2))
console.log(2.0.toString(2))
console.log(3.0.toString(2))
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt
因此,Number.parseInt 不会转换为二进制,而是从二进制转换。如果输入 3,则会收到 NaN,因为 3 不是从基数 2 到基数 10 的可能数字解析。
如果您改为运行此代码...
var input = prompt("Enter a decimal value");
console.log(input +" the binary value would be:",Number.parseInt(input,2));
输入“101”你会得到 5,因为我们正在从二进制转换为十进制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。