与toFixed的javascript怪异

时间:2011-07-15 20:37:39

标签: javascript

比较花车。根据第一块代码,5大于37.66。第二个块声称5小于37.66。什么是toFixed()做这些使第一个块以它的方式做出反应? (这只在ubuntu中的chrome上测试过)

amount = 5
total = 37.66
check = null
if(parseFloat(amount).toFixed(2) >= parseFloat(total).toFixed(2)){
    check = "amount IS GREATER"
}

检查>> “金额更大”

amount = 5
total = 37.66
check = null
if(parseFloat(amount.toFixed(2)) >= parseFloat(total.toFixed(2))){
    check = "amount IS GREATER"
}

检查>>空

2 个答案:

答案 0 :(得分:6)

number.toFixed()返回一个字符串,因此您的比较不是数字比较。

这应该有效:

amount = 5;
total = 37.66;
check = null;
if(parseFloat(amount.toFixed(2)) >= parseFloat(total.toFixed(2))){
    check = "amount IS GREATER";
}

然而,这是一种有点奇怪的方式来完成你想要完成的事情。怎么样呢:

amount = 5;
total = 37.66;
check = null;
if( Math.round(amount * 100) > Math.round(total * 100)) {
    check = "amount IS GREATER";
}

编辑:添加分号

答案 1 :(得分:0)

第一个不正确,因为.toFixed将返回一个字符串,并且字符串大于另一个字符串在此上下文中没有意义