为什么javascript比较数字不正确?
这很简单,但为什么不正确(提醒false
)?
<script>
var xxx = "112.77";
alert(xxx);
if(xxx < '2.50')
{
alert("false");
}
else
{
alert("true");
}
</script>
答案 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");
}