2011-07-15 29 views
4

比较花车。根据第一块代码,5大于37.66。第二块声称5小于37.66。什么是固定()做到这些,使第一个块反应的方式呢? (这仅是对铬在Ubuntu测试)JavaScript与古董的怪异

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" 
} 

检查>>空

回答

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"; 
} 

编辑:添加分号

+0

所以“5.00”大于“37.66”。这是一个按字母顺序排列的比较吗? –

+0

是的。 '5'出现在'3'之后,毕竟:) – digitalbath

+0

为什么我认为字符串比较的长度是?我猜这是一个漫长的一周:-P –

0

第一个是不正确的,因为.toFixed会返回一个字符串,字符串是大于其他没有在这方面意义