gpt4 book ai didi

javascript - 为什么 5.00 > 20.00 为 javascript parseFloat.tofixed(2) 返回 true

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:37 26 4
gpt4 key购买 nike

我对此感到困惑,因为如果我删除 te .toFixed(2) 那么条件将返回 false,因此是正确的,但是如果有 .toFixed(2) 它返回 true,这是错误的。

此外,当我使用 console.log 显示包含值的两个变量时,它们都返回该值

5.00 and 20.00

这是代码:

//this two values are actually populated from .val of an input field
var coupon_limit2 = 0;
var coupon_limit = $("#product_coupon_limit").val();
var sale_price = $("#product_product_list_price").val();


if(disc_type == "Percentage"){
if(coupon_type == "amount"){
coupon_limit2 = (coupon_limit/sale_price)*100;
}else{
coupon_limit2 = coupon_limit;
}
}else{
if(coupon_type == "percent"){
coupon_limit2 = (coupon_limit/100)*sale_price;
}else{
coupon_limit2 = coupon_limit;
}
}

var x = parseFloat($("#product_product_discount").val()).toFixed(2);
var y = coupon_limit2;

//returns correctly
if(x > parseFloat(y)){
alert("hi");
}

//returns wrong
if(x > parseFloat(y).toFixed(2)){
alert("hi");
}

我已经在使用 without .toFixed(2) 因为这是正常工作的,但我只是希望能解释为什么会这样。

谢谢

最佳答案

因为 toFixed 返回一个 string,并且在字符串比较中,以 "5" 开头的任何内容都大于以 开头的任何内容>“2”

无偿的例子:

var x = 5.0;
var y = 20.0;
console.log(typeof x); // number
console.log(x > y); // false
var xstr = x.toFixed(2);
var ystr = y.toFixed(2);
console.log(typeof xstr); // string
console.log(xstr > ystr); // true

关于javascript - 为什么 5.00 > 20.00 为 javascript parseFloat.tofixed(2) 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40418119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com