@zeaovede

Как удалить конечные нули из числа js?

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

function normalMatches() {
        formUpdate();

        if (duo_regular === true) {
            $(".solo-options, .solo-text").addClass("d-none");
            $(".solo-options, .solo-text").removeClass("d-flex");
            $(".duo-options, .duo-text").addClass("d-flex");
            $(".duo-options, .duo-text").removeClass("d-none");
            $(".solo-options :input").prop("checked", false);
            streaming = false;
        } else {
            $(".duo-options, .duo-text").addClass("d-none");
            $(".duo-options, .duo-text").removeClass("d-flex");
            $(".solo-options, .solo-text").addClass("d-flex");
            $(".solo-options, .solo-text").removeClass("d-none");
            $(".duo-options :input").prop("checked", false);
            duo_premium = false;
        }
        //price
        
        if (getRegion(server) == 'EU'){
            pricepergame = 70;
        }else{
            pricepergame = 70;
        }
        price = pricepergame * games_amount;
        completion_time = 1 * games_amount;
        if (getRegion(server) == 'OTHER') {
            price += price * 0.0;
        }
        if (duo_regular === true) {
            price += price * 0.4;
        }
        subtotal_price = price.toFixed(2);
        extra_price = 0;
        if (priority_boost === true) {
            extra_price += price * 0.2;
        }
        if (streaming === true) {
            extra_price += price * 0.15;
        }
        if (prime_time === true) {
            extra_price += price * 0.0;
        }
        if (duo_premium === true) {
            extra_price += price * 0.3;
        }

        extra_price = extra_price.toFixed(2);
        price = price + parseFloat(extra_price);
        price = price - (price * discount)
        price = price.toFixed(2);
        updateSummary();
    }



В этом месте пытался внести правку

...
        price = price.toFixed(2);
...



Предлагаемых решений много, но в моем случае не одно не сработало.

Пример моей записи:
price = r=(+n)price.toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,'$1');
  • Вопрос задан
  • 1208 просмотров
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
toFixed превращает число в строку. Возможно поэтому и ломается.
Не трогайте число. Но выводите строку.

В вашем коде нет вывода, но в качестве примера

// Идут расчеты
price = ...

// Делается вывод на страницу
element.innerHTML = price.toFixed();


Так вы не трогаете число прайс, но форматируете вывод как нужно

PS. toFixed(2) - вернёт строковое представление числа с двумя знаками после запятой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы