JavaScript 计算器 5 + 5 = 55?

3

嘿,我做了一个JavaScript计算器并想试试5 + 5,它给我55而不是10?然而,如果我尝试5/5,它给我1,如果尝试5-5,它给我0,乘法也是一样的。我不明白我的代码有什么问题,还想尝试console.log,但它不起作用,所以我使用document.write。

这是我的代码:

var Plus = function()
{
    var N1 = prompt("Enter first number");
    var N2 = prompt("Enter second number");
    var sum = (N1 + N2);
    document.write(sum);
} 

var Minus = function()
{
    var N1 = prompt("Enter first number");
    var N2 = prompt("Enter second number");
    var sum = (N1 - N2);
    document.write(sum);
}

var Division = function()
{
    var N1 = prompt("Enter first number");
    var N2 = prompt("Enter second number");
    var sum = (N1 / N2);
    document.write(sum);
}

var Times = function()
{
    var N1 = prompt("Enter first number");
    var N2 = prompt("Enter second number");
    var sum = (N1 * N2);
    document.write(sum);
}

var Answer = prompt("Plus ?, Minus ?, Division ? or Times ?");

    if( Answer === "Plus")
    {
        Plus();
    }
    else
    {
        if( Answer === "Minus")
        {
            Minus();
        }
        else
        {
            if( Answer === "Division")
            {
                Division();
            }
            else
            {
                if( Answer === "Times")
                {
                    Times();
                }
                else
                {
                    document.write("How did you get here?");
                }
            }
        }
    }

1
变量 sum = (+N1 + +N2); - dandavis
或者变量总和 = (1.0N1+1.0N2) - Paul
3个回答

5

N1N2是字符串,而不是数字。将两个字符串相加会将它们连接在一起,这就是您的“错误”。

您需要将它们解析为数字:

var N1 = Number(prompt("Enter first number"));

2

这种方法适用于其他运算符但不适用于加号,因为 "a" + "b" = "ab"。

也就是说,你正在连接字符串。所以 "5" + "5" = "55"。

如果你先将它们转换为整数,就可以解决这个问题。

var sum = (parseInt(N1,10) + parseInt(N2,10));

2
你应该给parseInt函数传递一个基数参数:parseInt(N1, 10)。如果没有这个参数,一些浏览器可能会将带有前导零的数字解释为八进制数。 - Blender
@Blender:好的,没错...我以前从未遇到过这种情况,但是我刚刚查证了一下。 - Chelsea Urquhart

1

Prompt 可以获取输入的字符串格式,您需要将其转换为整数进行整数加法操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接