【问题标题】:If condition for comparing integer and float does not working如果比较整数和浮点数的条件不起作用
【发布时间】:2012-10-31 08:55:01
【问题描述】:

我在 javascript 中使用了一个 If 条件,

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

感谢您的帮助!

【问题讨论】:

    标签: javascript integer


    【解决方案1】:

    实际上,我怀疑它们都是字符串。当然calculatedQty 是,因为您已经从输入字段的value 中检索到它,并且value 属性的值始终是一个字符串。使用parseInt 和/或parseFloat,这样您就可以比较数字而不是字符串。

    考虑:

    console.log("1.0" > "1"); // "true"
    console.log(1.0 > 1);     // "false"
    

    【讨论】:

    • 考虑使用Number(someValue) 创建数字。
    • @xyu:只有当用户输入奇怪的东西时你想要奇怪的结果。 parseIntparseFloat 通常是解析最终用户输入的更好选择。
    • 你可以随时检查isNaN(number)
    • @xyu:如果用户输入"010"?如果您使用Number()(错误地应用八进制),一些较旧的浏览器会将其解释为 8。而parseInt("010", 10)parseFloat("010") 总是 返回10。由于Number 没有优势和潜在的缺点,我没有看到支持的论点。但不管你喜欢什么。
    • 谢谢,感谢!但我已经对其进行了测试,它也可以作为字符串正常工作!但是当用户输入实际Qty = 1 和计算Qty = 1.0 时,我面临的主要问题是;否则,如果我输入的实际数量为 1.5 或大于 1.0,那么它的工作正常。
    猜你喜欢
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 2020-08-07
    • 2016-05-24
    相关资源
    最近更新 更多