为什么这个代码中的一个变量大于另一个?

时间:2012-04-05 00:39:36

标签: javascript comparison numeric

为什么rfd_total > max_rfd是真的?我不明白以下代码中rfd_total如何大于max_rfd

max_rfd = parseFloat(jQuery('#mx-rfd_'+order_id).val()).toFixed(2);

rfd_total = parseFloat(items_total+tax_total+shipping+allowances*1).toFixed(2);


if( rfd_total > max_rfd)
{   if(isNaN(rfd_total)) alert('rfd_total isNaN'); // not triggered
    if(isNaN(max_rfd)) alert('max_rfd isNaN'); // not triggered
    alert(rfd_total); // alerts 51.16
    alert(max_rfd); // alerts 102.32
    return false;
}

1 个答案:

答案 0 :(得分:4)

这是因为rfd_totalmax_rfd是字符串。

您会注意到"51.16" > "102.32"返回true。

toFixed()返回一个字符串。

您需要将变量强制转换为数字,以便了解如何使用快速搜索。

或者您可以使用像这样的功能保持代码清洁并正确执行

function decimalRoundTo(n, decimalPlaces) {
    var d = Math.pow(10, decimalPlaces);
    return Math.round(n*d)/d;
}