Javascript 如果比较整数和浮点的条件不起作用
我在javascript中使用了一个If条件Javascript 如果比较整数和浮点的条件不起作用,javascript,integer,Javascript,Integer,我在javascript中使用了一个If条件 var iid = "c_poqty_"+itemid; var calculatedQuantity = document.getElementById(iid).value; if(! isNaN(actualQuantity)) { if(actualQuantity >= calculatedQuantity) { return true; } else { alert("You mus
var iid = "c_poqty_"+itemid;
var calculatedQuantity = document.getElementById(iid).value;
if(! isNaN(actualQuantity)) {
if(actualQuantity >= calculatedQuantity) {
return true;
} else {
alert("You must enter the order qty same or greater than the calculated PO Qty");
document.getElementById(iid).focus();
return false;
}
} else {
alert("Please Enter valid number");
document.getElementById(iid).focus();
return false;
}
在这里,calculatedQuantity
始终是浮点数,actualQuantity
可以是整数,
我有一个测试用例:
calculatedQuantity = 1.0
actualQuantity = 1
谢谢你的帮助 实际上,我怀疑它们都是字符串。当然,
calculatedQty
是,正如您从输入字段的value
检索到的那样,value
属性的值始终是字符串。使用parseInt
和/或parseFloat
比较数字而不是字符串
考虑:
console.log("1.0" > "1"); // "true"
console.log(1.0 > 1); // "false"
考虑用“代码>数字(SeaValue)< /Cyto> .xYu创建数字:只有当用户键入奇怪的东西时,您想要奇特的结果。”code>parseInt和
parseFloat
通常是解析最终用户输入的更好选择。您可以随时检查isNaN(number)
@xyu:以及用户是否键入“010”
?如果您使用Number()
(错误地应用了八进制),一些较旧的浏览器会将其解释为8。而parseInt(“010”,10)
和parseFloat(“010”)
总是返回10
。由于Number
没有优势,也没有潜在的劣势,所以我认为没有赞成的理由。但你喜欢什么都行。谢谢,谢谢!但我已经测试过了,它的工作也很好!但当用户输入actualQty=1和calculatedQty=1.0时,我面临的主要问题是;否则,如果输入的实际数量为1.5或大于1.0,则其工作正常。