2014-10-18 35 views
-3

这个非常简单的数学运算是混淆了我..的Javascript数学运算结果

var cap = '17.00' 
var amount = '114.00'; 

if(amount > cap){ 
    alert('Greater'); 
}else{ 
    alert('Less Than'); 
} 

为什么会这样的结果说114.00小于17.00

我相信它是一个非常简单的答案。这些都是整数,所以我认为这将是对价值的直接比较,但显然我错了?

+0

代码中没有整数。首先,他们是弦乐队。其次,如果你删除'''s,由于'.00',它们仍然不是整数。第三,它们仍然不是整数,因为JavaScript中的所有数字都是双精度。 – 2014-10-18 22:00:09

回答

5

这并不是说114.00小于17.00,而是说"114.00"出现在"17.00"之前。

您正在比较字符串,因此根据字符串如何排序来完成比较,而不是它们表示的数字值。

如果要比较的数字,你需要把数字的变量:

var cap = 17.00; 
var amount = 114.00; 
1

去除环境的数字引号。你正在比较字符串而不是数字。

2

这些都是整数,所以我想这将是值

这就是问题的直接比较:他们不是整数,他们是字符串。字符串按字典顺序进行比较,例如('a' < 'b') === true('a' < 'aaa') === true

如果要比较他们的数量,确保他们的数字开始与:

var cap = 17.00; // the .00 is redundant though, just 17 would also work 
var amount = 114.00; 

,或者如果这些变量从其他地方收到的字符串,首先将它们转换:

var cap = '17.00'; 
var amount = '114.00'; 
if (Number(cap) < Number(amount)){ 
    alert('Greater'); 
}else{ 
    alert('Less Than'); 
}