Как добавить "x" в конце числа

Как в конце randomFloat() добавить x(что бы число шло от 0х до 5х для примера) и что бы не портит функционал fun3() Я пробывал так "disp.innerText = acc.toFixed(2) + "x";" но в таком случае не происходит действие функции fun3() Мой код:

const oneStepTime = 100;
const disp = document.getElementById("num1avi");
const timerDisp = document.getElementById("timer");

function randomFloat(maxNumber, maxStep, minStep) {
  let acc = 1.00;
  const interval = setInterval(() => {
    let step = 0.01;
    if (maxNumber - acc > step) {
      acc += step;
    } else {
      acc = maxNumber;
      clearInterval(interval);
      setTimeout(() => {
        disp.innerText = "";
        run();
      }, 1000)
    }
    disp.innerText = acc.toFixed(2);
  }, oneStepTime);

}

function run() {
  let count = 3;
  const countdownInterval = setInterval(() => {
    timerDisp.innerText = count;
    count--;
    if (count < 0) {
      clearInterval(countdownInterval);
      timerDisp.innerText = '';
      randomFloat(Random(), 10, 1);
    }
  }, 1000);
}

function Random() {
  const min = 1;
  const max = 5;
  return Math.round((Math.random() * (max - min) + min) * 100) / 100;
}


run(3, 10);

    
    function fun3() {
        num1 = display.innerText;
        num2 = disp.innerText;
        var x = num1 * num2;
        alert("Ваше число" + " " + Math.floor( x * 100 ) / 100);
    }

Ответы (1 шт):

Автор решения: yar85

Я пробывал так "disp.innerText = acc.toFixed(2) + "x";" но в таком случае не происходит действие функции fun3()

 function fun3() {
    num1 = display.innerText;
    num2 = disp.innerText;
    var x = num1 * num2;
    alert("Ваше число" + " " + Math.floor( x * 100 ) / 100);
}

Считывание текста элемента через свойство innerText всегда возвращает строку (значение типа string).
И хоть при умножении на следующей строке кода, JS автоматически попытается преобразовать эту строку в число (привести к типу number), с символом x это завершится неудачей: потому что такой символ не может быть частью числа... и в арифметическом выражении из твоего кода, строковое значение переменной num2 преобразуется в специальное значение "не число" (NaN).
Результатом любых арифметических операций со значением NaN всегда является NaN.

В таких ситуациях, когда строка содержит "лишние" символы только после числовых (например, '42.01х') - для преобразования строки к вещественному числу можно использовать встроенную функцию parseFloat:

const num2 = parseFloat(disp.innerText);

Похожая стандартная функция parseInt делает то же самое, но "извлекает" из строки только целую часть числа, игнорируя десятичный разделитель . и цифры после него (если есть).
При успешном преобразовании, типом возвращаемого этими функциями результата будет number.


Надо учитывать, что в случаях когда входная строка пуста, или когда нечисловые символы (кроме пробелов) находятся и в начале строки тоже - эти функции вернут вместо числового результата NaN. Обработка таких неприятных случаев зависит и от формата входных данных, и от алгоритма: разные задачи предполагают разные решения.

→ Ссылка