Сравнение плавающих чисел в JavaScript - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь сделать то, что мне показалось довольно простым, но у меня странные результаты.У меня есть два поля на странице: transactionAmount и transactionLimit.Когда кнопка нажата, она вызывает функцию javascript, которая проверяет, что сумма не превышает предельное значение:

var transactionAmount = parseFloat(document.getElementById("amount").value).toFixed(2);
var transactionLimit = parseFloat(document.getElementById("limit").value).toFixed(2);

if (transactionAmount > transactionLimit) {
  alert("Over limit");
}

Если я установлю для значениеactionAmount 2,00 долл., А лимит транзакции 100,00 долл., Яполучить предупреждение о превышении лимита.Если я установлю значение транзакции $ 1.00, то оно будет работать нормально.В принципе, любое другое значение менее 1,00 долл. США работает, если предел составляет 100,00 долл. США, но любое значение свыше 1,00 долл. США дает мне ошибку.

Буду благодарен за понимание!Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Попробуйте добавить функцию «Number ()» к вашим значениям, чтобы toFixed () фактически преобразовал их в строку.Вы также можете добавить «+», прежде чем выполнить то же действие.

Пример:

    var transactionAmount = Number(parseFloat("150.00").toFixed(2)); //or: +parseFloat("150.00").toFixed(2)
    var transactionLimit = Number(parseFloat("100.0").toFixed(2)); //or: +parseFloat("100.0").toFixed(2)

    if (transactionAmount > transactionLimit)
    {
       alert("Over limit");
    } else {
        alert("you ok dude");
    }

Вывод:

"Over limit"

Надеюсь, это поможет вам!

0 голосов
/ 25 октября 2018

Основная проблема возникает из-за toFixed(2), которая преобразует ваш результат в string, поэтому ваше состояние не работает так, как вы ожидали.просто оберните его предшествующим символом +, чтобы сделать его Число из Строка

var transactionAmount = +(parseFloat('2.00').toFixed(2));
var transactionLimit = +(parseFloat('100.00').toFixed(2));
console.log(transactionAmount,transactionLimit, typeof transactionAmount,typeof transactionLimit )
if (transactionAmount > transactionAmount ) {
  console.log("Over limit");
}
...