Отладка калькулятора базовых конверсий до базовых 809 - PullRequest
0 голосов
/ 14 октября 2019

Так что мой калькулятор создан для абсолютно огромных чисел. Я немного развлекаюсь и создаю базовую систему на основе pokedex. Так, например, база 151 будет включать в себя всех покемонов из поколения 1, а база 809 идет до Мелметалла из Pokemon Go. Число 0 представлено необработанным яйцом покемона.

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

Симптом 1: в настоящее время на моем экране установлено базовое число Пиджи (база 16) и введено базовое число 10 80000006871717981. Моя математика дает мне следующие остатки с соответствующими репрезентативными изображениями

(1) (1) (12) (3) (7) (9) (5) (1) (7) (9) (14) (1) (8) (6) (0)

Bulbasaur Bulbasaur Butterfree Venusaur Squirtle Blastoise Charmeleon Bulbasaur Squirtle Blastoise Kakuna Bulbasaur Wartortle Charizard Egg

А результат простого преобразования с помощью toString (16) равен 11c3795179e. Выходной сигнал калькулятора windows 10 - 11C3795179E185D, что означает, что e / Kakuna, 6 / Charizard и 0 / Egg неверны.

Симптом 2: Большие числа будут иметь одинаковые выходные данные. 1000000000000000001 и 1000000000000000000 оба выводятся как

(3) (458) (599) (562) (324) (484) (498)

Венасаур Мантайке Кланг Ямаск Торкоал Палкиа Тепи

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

Для симптома 2 я попытался привести значение кBigInt, когда я установил значение для ввода, но это просто ничего не дало, вычислил только output3

function calculate()
    {
        document.getElementById('output').innerHTML= '';
        document.getElementById('output2').innerHTML= '';

        var base = {{base}};//gets base from the python code
        var input = document.getElementById('base10').value;

        document.getElementById('output3').innerHTML= parseInt(input).toString(16);

        var remainder = input % base;
        while(input > 0)
        {
            //alert(input + " % " + base + " = " + remainder);
            document.getElementById('output').innerHTML = '<img src="{{url_for('static', filename='images/')}}'+ remainder+'MS.png">' + document.getElementById('output').innerHTML;//adds the images of the pokemon
            document.getElementById('output2').innerHTML = '('+remainder+')' + document.getElementById('output2').innerHTML;
            input = parseInt(input / base);
            remainder = input % base;
        }
    }

Для моих ожидаемых результатов, как я уже упоминал, встроенная функция js показывает, что тест base 16точно, но калькулятор windows 10 говорит иначе. Я не знаю, с кем пойти. А что касается проблем с большими числами, мне просто нужно сделать так, чтобы большие числа из базы 10 оставались стабильными, не получали научную запись и все еще могли обрабатываться.

...