这个非常简单的数学运算是混淆了我..的Javascript数学运算结果
var cap = '17.00'
var amount = '114.00';
if(amount > cap){
alert('Greater');
}else{
alert('Less Than');
}
为什么会这样的结果说114.00
小于17.00
?
我相信它是一个非常简单的答案。这些都是整数,所以我认为这将是对价值的直接比较,但显然我错了?
这个非常简单的数学运算是混淆了我..的Javascript数学运算结果
var cap = '17.00'
var amount = '114.00';
if(amount > cap){
alert('Greater');
}else{
alert('Less Than');
}
为什么会这样的结果说114.00
小于17.00
?
我相信它是一个非常简单的答案。这些都是整数,所以我认为这将是对价值的直接比较,但显然我错了?
这并不是说114.00
小于17.00
,而是说"114.00"
出现在"17.00"
之前。
您正在比较字符串,因此根据字符串如何排序来完成比较,而不是它们表示的数字值。
如果要比较的数字,你需要把数字的变量:
var cap = 17.00;
var amount = 114.00;
去除环境的数字引号。你正在比较字符串而不是数字。
这些都是整数,所以我想这将是值
这就是问题的直接比较:他们不是整数,他们是字符串。字符串按字典顺序进行比较,例如('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');
}
代码中没有整数。首先,他们是弦乐队。其次,如果你删除'''s,由于'.00',它们仍然不是整数。第三,它们仍然不是整数,因为JavaScript中的所有数字都是双精度。 – 2014-10-18 22:00:09