Почему одна переменная больше, чем другая в этом коде?

Почему 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 ответ

Решение

Это потому что rfd_total max_rfd Строки

Вы заметите, что "51.16" > "102.32" возвращает истину.

toFixed() возвращает строку

Вам нужно будет привести ваши переменные к числам, что вы можете узнать, как это сделать с помощью быстрого поиска.

Или вы можете сохранить свой код в чистоте и сделать это правильно, используя такую ​​функцию, как эта

function decimalRoundTo(n, decimalPlaces) {
    var d = Math.pow(10, decimalPlaces);
    return Math.round(n*d)/d;
}
Другие вопросы по тегам