为什么javascript比较数不正确?

时间:2017-05-02 07:35:37

标签: javascript

为什么javascript比较数字不正确?

这很简单,但为什么不正确(提醒false)?

<script>
  var xxx = "112.77";
  alert(xxx);
  if(xxx < '2.50')
  {
      alert("false");     
  }
  else
  {
      alert("true");          
  }
</script>

https://jsfiddle.net/sp82ehqp/

5 个答案:

答案 0 :(得分:3)

您可以使用unary +将至少一个转换为数字,然后进行比较。

字符串按角色进行比较。

如您所见,如果其中一个值是数字,则按数字进行比较。

var xxx = "112.77";
console.log(xxx);
console.log(xxx < '2.50');   // true
console.log(+xxx < +'2.50'); // false
console.log(xxx < +'2.50');  // false
console.log(+xxx < '2.50');  // false

答案 1 :(得分:2)

  

那是因为你使用String而不是数字。 只需删除即可   ""

这是你的updated JSFiddle

  var x = 112.77;
  alert(x);
  if (x < 2.50) {
    alert(false);
  } else {
    alert(true);
  }

JavaScript中的动态数据类型

在JavaScript数字中,字符串和布尔值由标点符号标识。 e.g:

var foo = 42;    // foo is now a Number
var foo = 'bar'; // foo is now a String
var foo = true;  // foo is now a Boolean

Read more about JavaScript basic data types

将字符串转换为数字

如果您无法将号码定义为数字(例如,您从输入字段中提取数字)。然后,您可以使用 Number() 进行转换。如果您的号码是整数,您也可以使用 parseInt()

Number('123')     // 123
Number('12.3')    // 12.3
Number('')        // 0
Number('0x11')    // 17
Number('0b11')    // 3
Number('0o11')    // 9
Number('foo')     // NaN
Number('100a')    // NaN

答案 2 :(得分:0)

您正在比较字符串,将它们解析为数字

var xxx = 112.77;
  alert(xxx);
  if(xxx < 2.50)
  {
     alert("false");     
 }
 else
  {
  alert("true");          

}

答案 3 :(得分:0)

您正在比较字符串。

 var xxx = 112.77;
  alert(xxx);
  if(xxx < 2.50)
  {
      alert("false");     
  }
  else
  {
      alert("true");          
  }

答案 4 :(得分:0)

如果其中一个对象是数字而另一个是字符串,则JavaScript将进行类型转换。因此,如果出于某种原因,您的xxx变量是一个字符串,您只需要更改2.50的类型:

 var xxx = "112.77";


  alert(xxx);
  if(xxx < 2.50 )
  {
      alert("false");     
  }
  else
  {
      alert("true");          
  }