Logi c для моего приложения калькулятора размера земли - PullRequest
0 голосов
/ 04 февраля 2020

Я делаю этот калькулятор акров и карат для моего дяди, чтобы помочь ему в его работе.

Я объясню всю идею этой вещи на этом примере. Таким образом, если вы добавите 3,22 + 2,2, это должно быть = 5,42, но в этом калькуляторе 3,22 + 2,2 должно = 6, потому что 3 акра + 2 акра = 5 акров и 22 карата + 2 карата = 1 акр, поэтому общая сумма составит 6 акров.

То, как я делаю это в коде, заключается в том, что я делю число, например, 3,22 на два, 3 и 22, а другое число на 2 и 2, и я складываю целые числа вместе и дроби вместе, и если дроби> = 24, я добавляю единицу к целым числам, и если от всего вычисления осталось дробей, я оставляю это. Например, 3.15 + 2.15 = 6.6, но я застрял на том, как я могу добавить числа, там также есть ошибка, которую я не знаю, как решить.

В любом случае вот код

function getValue(v) {
    return +v.toString().match(/\.(\d*)/)[1] || 0;
}
function getTotal() {
    d += Math.floor(num);
    p += getValue(num);

    if (p >= 24) {
        p -= 24;
        ++d;
    }
    total = d + p / 100;
    ptag.textContent = total;
}

Я добавил часть кода, где я застрял.

Примечание: я пытаюсь сделать так, чтобы вещь могла добавлять несколько чисел, а не только два. Также я пытаюсь добавить вычитание, но я не знаю, как начать работать с вычитанием, потому что я даже не закончил сложение.

1 Ответ

2 голосов
/ 04 февраля 2020

Если ошибка, о которой вы говорите, выглядит примерно так:

Uncaught TypeError: Cannot read property '1' of null 

Это из-за вашей функции getValue. Я предлагаю вместо использования чего-то столь же сложного, как

function getValue(v) {
return +v.toString().match(/\.(\d*)/)[1] || 0;
}

использовать

function getValue(v) {
    return floor((v % 1) * 100);
}

Это имеет тот же эффект, что и код, который вы написали. Например, из входных данных 3.13 возвращается 13.

Но есть и другие проблемы.

Во-первых, вам следует обновлять переменную num время от времени и часто, в противном случае , она всегда будет оставаться пустой строкой (вы определили ее только в строке 20 и не обновляли ее после этого).

Во-вторых, вы должны очистить d и p переменная после использования. На данный момент обе эти переменные продолжают увеличиваться при каждом запуске функции getTotal


На вопрос о том, как вы можете добавить два числа, я предлагаю вам создайте переменную, в которой вы можете сохранить первое число, введенное пользователем.

Например, когда пользователь набрал 4.19 и нажал кнопку «плюс», сохраните этот 4.19 в переменной (скажем, firstNum ). Затем, когда пользователь нажал кнопку равенства, добавьте число из текущего поля ввода с переменной firstNum .


От того, как именно вы собираетесь добавить два разных числа, разбейте два числа, которые вы хотите добавить в части Acres и части Karats. Затем добавьте их отдельно, затем используйте ваш getTotal .

Так что, если число равно 3,21 и 5,18, добавьте 3 и 5, добавьте 21 и 18, а затем добавьте оба. вы получите 8,39. Наконец, конвертируйте 8.39 в 9.15.

Извините, если мои расчеты неверны. Я впервые с этой концепцией! Но я верю, что это путь к go.

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