【问题标题】:Addition operator not working in JavaScript加法运算符在 JavaScript 中不起作用
【发布时间】:2014-01-07 01:27:42
【问题描述】:

加法运算符在 Javascript 中不适合我。如果我做 5+5,它会给我 55 而不是 10。我该如何解决这个问题?

var numberOne = prompt (Enter first number.);
if (numberOne > 0.00001) {
 var numberTwo = prompt(Enter the second number.);
if (numberTwo > 0.00001) {
var alertAnswer = alert (numberOne + numberTwo);
}
}

【问题讨论】:

  • parseInt(),它们不是数字而是字符串

标签: javascript variables operators addition


【解决方案1】:

您正在读取字符串,并将它们连接起来。您需要使用parseInt 将它们转换为整数。

IE:

var numberOne = parseInt(prompt("Enter first number."), 10);

【讨论】:

【解决方案2】:

需要进行两个主要更改。首先,提示必须使用Strings。其次,您必须将用户的String 输入解析为一个数字。

var numberOne = prompt ("Enter first number.");
if (numberOne > 0.00001) {
     var numberTwo = prompt("Enter the second number.");
if (numberTwo > 0.00001) {
    var alertAnswer = alert (parseInt(numberOne,10) + parseInt(numberTwo,10));
}

【讨论】:

  • 省略基数为时过早
  • @zerkms 我认为该操作使用的是基于十进制的数字系统。
  • 如果你不明确指定,JS 怎么知道?
  • 这不是默认的吗?
  • @zerkms 你的权利。 An integer that represents the radix of the above mentioned string. Always specify this parameter to eliminate reader confusion and to guarantee predictable behavior. Different implementations produce different results when a radix is not specified.
【解决方案3】:

你需要使用 parseInt

 var a = parseInt(prompt("Please enter a number")); 

【讨论】:

    【解决方案4】:

    为了完整性:parseInt() 的一个潜在问题(在某些情况下)是它在数字字符串的 end 处接受垃圾。也就是说,如果我输入“123abc”,parseInt() 将愉快地返回123 作为结果。此外,当然,它只处理整数——如果你需要浮点数(带有小数部分的数字),你会想要parseFloat()

    另一种方法是将一元 + 运算符应用于字符串:

     var numeric = + someString;
    

    这会将字符串解释为浮点数,并且它会注意尾随垃圾并在存在时生成NaN 结果。另一种类似的方法是使用按位“或”运算符|0

    var numeric = someString | 0;
    

    这会给你一个整数(32 位)。最后是Number 构造函数:

    var numeric = Number( someString );
    

    也允许分数,不喜欢垃圾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 2020-09-03
      • 2018-02-26
      • 2017-05-03
      • 1970-01-01
      相关资源
      最近更新 更多