【问题标题】:Having problems with my JavaScript Equation (Part of Binary to Decimal Converter)我的 JavaScript 方程有问题(二进制到十进制转换器的一部分)
【发布时间】:2012-12-17 06:01:38
【问题描述】:

所以这很令人愤慨,一个简单的方程式会产生一个我几乎无法理解的随机数。

好的,所以我正在尝试制作一个从二进制转换为十进制的应用程序。我知道这样做的一种方法是这样做。

说,11001 以十为底。

取最左边的数字:1

0 * 2 + 1(This 1 is the leftmost binary digit) = 1...
1 * 2 + 1(This 1 is the second leftmost binary digit) = 3...
3 * 2 + 0(etc...) = 6...
6 * 2 + 0 = 12...
12 * 2 + 1 = 25...

所以,它正确地转换为 25。虽然,当我用 JavaScript 中的变量插入这个方程时,结果是随机的废话。

观看:

Inputarray 是用户输入的数字中所有字符的数组。所以,如果是 11010,那么 inputarray 就是 1,1,0,1,0。

然后它遍历数组的每个字符,并将每个数字插入方程中,如图所示。

for (var j=0;j<=uinputlen;j++) {
var nextletter = uinput.charAt(j);
inputarray.push(nextletter);
}

for (var h=0;h<=uinputlen;h++) {
decvalue = decvalue * 2 + inputarray[h];
}

顺便说一句,“decvalue”在我的代码开头预设为 0。

请对描述或其他任何问题发表评论,这有点令人困惑。

【问题讨论】:

  • 看看到目前为止给出的答案,似乎没有人听说过parseInt、toString...甚至是位移运算符。
  • 太棒了!点个赞

标签: javascript binary decimal converter equation


【解决方案1】:

JavaScript 可以原生地做到这一点:

var binary = "11001";
var decimal = parseInt(binary,2);

// other way:

var decimal = 1234;
var binary = decimal.toString(2);

【讨论】:

  • 那么这是把它变成十进制还是只是把它变成一个字符串?
  • 第一个使用parseInt将二进制转换为十进制。第二个使用toString 将十进制数转换为二进制数。在这两种情况下,2 都会告诉 JavaScript 你想要二进制文件。您可以使用类似的代码转换为几乎任何基数。
  • 你在逗我吗?我在这上面花了几个小时,我本来可以做到的!!!!!!!啊!
  • Eeeeyup。我犯了同样的错误;)
【解决方案2】:

由于您在输入数组中获取字符,因此 JavaScript 会将结果转换为字符串:

var a = 0; a = a * 2 + '1'; alert(a); //alerts "01"

为了得到你想要的行为,你需要转换字符串:

var a = 0; a = a * 2 + Number('1'); alert(a); //alerts 1

一般来说,有更好的方法来做到这一点,(例如@Kolink的回答)

更多信息请参见http://www.quirksmode.org/js/strings.html#stringnum。

【讨论】:

    【解决方案3】:

    您添加的是字符代码,而不是数字代表的值。 .charAt() 将返回 '0' 或 '1' 这是一个字符串,因此它将作为字符串添加。

    我建议您将值的推送方式更改为以下内容:

    inputarray.push(nextletter == '1' ? 1 : 0)
    

    或

    inputarray.push(nextletter * 1)
    

    【讨论】:

    • charAt 返回该位置的字符串,并将数字添加到字符串连接,它不会转换为字符代码。
    猜你喜欢
    • 2019-12-16
    • 2021-01-03
    • 2016-08-26
    • 1970-01-01
    • 2013-11-30
    • 2020-06-27
    • 1970-01-01
    • 2020-06-25
    • 2012-05-28
    相关资源
    最近更新 更多