Я написал функцию javascript, которая должна проверять, превышает ли сумма 0 и меньше определенной суммы. Например, если общая сумма должна составлять $ 800,00, и пользователь пытается заплатить 1100 долларов США, я хочу, чтобы функция сначала проверила, что выплачиваемая сумма (1100 долларов США) больше 0 (true), и что выплачиваемая сумма также меньше чем общая сумма (ложная). Я был уверен, что моя логика была в порядке, но эта функция не работает правильно:Нечетное поведение JavaScript при сравнении номеров, превышающих 1000
function validate_payment_amount() {
var payment_amt = get_amount_paying(); // 1100.00
var amt_due = get_amount_due(); // 800.00
console.log('Is ' + payment_amt + ' greater than 0?: ' + (payment_amt > 0));
console.log('&&');
console.log('Is ' + payment_amt + ' less than or equal to ' + amt_due + '?: ' + (payment_amt <= amt_due));
return payment_amt > 0 && payment_amt <= amt_due;
}
Функция оценивает правильно, если payment_amount
является менее 1000, вот вывод на консоль:
Is 999.00 greater than 0?: true
&&
Is 999.00 less than or equal to 892.50?: false
Таким образом, все работает отлично. Однако, когда я даю ему несколько больше 1000, это то, что консоль отображает:
Is 1001.00 greater than 0?: true
&&
Is 1001.00 less than or equal to 892.50?: true
Может кто-нибудь, пожалуйста, пролить некоторый свет на это?
EDIT: get_amount_paying()
и get_amount_due()
:
function get_amount_due() {
return parseFloat($("#still_due").data('amount')).toFixed(2);
}
function get_amount_paying() {
return parseFloat($("#make_payment").val()).toFixed(2);
}
Рассчитываются ли 'payment_amt' и' amt_due' как строки или поплавки? –
Очень подозрительно. Может быть, ваш тип данных не является «номером», может быть, он подходит как «строка»? – Oybek
Вы уверены, что вары - это цифры, а не строки? – Jensd