为什么5.00 >20.00对javascript parseFloat.tofixed(2)返回true
why does 5.00 > 20.00 returns true for javascript parseFloat.tofixed(2)
我对此感到困惑,因为如果我删除。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");
}
我已经使用没有。tofixed(2),因为这是什么工作正常,但我只是希望有一个解释,为什么会发生这种情况。
谢谢
因为toFixed
返回一个字符串,并且在字符串比较中,任何以"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
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 对负指数调用的.toFixed()返回一个数字,而不是字符串
- Wy js 方法 toFixed() 返回 NaN
- JavaScript:始终从函数(货币支持)返回 .toFixed(2)
- toFixed();只返回了.00
- Javascript方法链:正确的方法链toFixed()和parseFloat()返回一个数字,而不是一个字符串
- 为什么5.00 >20.00对javascript parseFloat.tofixed(2)返回true
- toFixed(3) -6.1e-15返回-0.000,我怎么能放弃减号