Математический расчет проблемы с Javascript - PullRequest
1 голос
/ 17 февраля 2012

У меня небольшие проблемы с математическим вычислением в javascript.Цель этого расчета - создать значение, когда пользователь щелкает текстовое поле.

Например: 1 килограмм стоит 32 цента за доставку в Америку, и пользователь хочет узнать, какая 10 кг будет стоить емусоставляет $ 3,20.Для этого у меня есть следующий фрагмент кода JavaScript:

    function calculate(num) {
        var weight  = document.getElementById('weight'+num);
        var price   = document.getElementById('price'+num);
        if(num == undefined || num == '' || num.length <= 0 || isNaN(weight.value) || isNaN(price.value)) return false;

        if(num == 1) multiplyBy = 0.32;
        if(num == 2) multiplyBy = 0.14;
        if(num == 3) multiplyBy = 0.24;
        if(num == 4) multiplyBy = 0.53;

        var sum = parseInt(document.getElementById('weight'+num).value) * multiplyBy;
        if(isNaN(sum)) return false;
        price.value = sum;
    }

Приведенный выше код прекрасно работает, однако, когда я переворачиваю процесс (кто-то имеет $ 3,20 и хочет узнать, сколько килограммов он / она может отправитьс этим (что составляет 10 кг) скрипт возвращает: 9,375 кг

Следующий код используется для этого расчета:

function reverse(num) {
        var weight  = document.getElementById('weight'+num);
        var price   = document.getElementById('price'+num);
        if(num == undefined || num == '' || num.length <= 0 || isNaN(weight.value) || isNaN(price.value)) return false;

        if(num == 1) divideBy = 0.32;
        if(num == 2) divideBy = 0.14;
        if(num == 3) divideBy = 0.24;
        if(num == 4) divideBy = 0.53;

        var sum = parseInt(document.getElementById('price'+num).value) / divideBy;
        if(isNaN(sum)) return false;
        weight.value = sum;
    }

Я, честно говоря, не понимаю, почему он терпит неудачу, он будетБуду очень признателен, если кто-то может помочь мне с этим.

1 Ответ

4 голосов
/ 17 февраля 2012
var sum = parseInt(document.getElementById('price'+num).value) / divideBy;

Вы вводите price в целое число перед его делением. Поэтому, если price равно 3.20, вы на самом деле делите 3 / 0.32, что составляет 9.375.

Не вводите это целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...