Как добавить "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 шт):
Я пробывал так "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
. Обработка таких неприятных случаев зависит и от формата входных данных, и от алгоритма: разные задачи предполагают разные решения.