Я делал проще:
var quantity = 1;
забыл о том что менял значение с 0 на 1, ну в числе как минимум 1 цифра то полюбому будет
Почему выдаёт ошибку “Timeout error”, чего не так-то???
var x = 1;
var quantity = 0;
while ((number / x) > 1) {
quantity++;
x *= 10;}
console.log (quantity)
ошибку эту выдаёт если не ошибаюсь если цикл бесконечный, видимо у тебя всё время условие выполняется…
Но ваш код у меня работает без проблем…
Правда я его в местной среде запускал.
Также код выполняется без ошибок. Пришлите скриншот, пожалуйста.
господа, все выполняется верно, дааа)
видимо, изначальная невнимательность моя)
спс)
var number = 23515625621;
var cutNumber = number;
var quantity = 0;
var i = 0;
while(quantity <= number && cutNumber > 1){
if(cutNumber >= 1){
cutNumber = cutNumber/10;
console.log(cutNumber);
quantity++;
}
}
console.log(quantity);
у меня получилось вот так
var number = 123;
var quantity = 0;
while(number >= 1){
number/=10;
quantity++
}
console.log(quantity)
я сравниваю с десятками, сотнями итд
var number = 123;
var quantity = 1;
var compare = 10;
while (number > compare) {
compare = compare * 10;
quantity++;
}
Рекомендую использовать свойства STRING
var number = 123;
var quantity = number.toString().length;
quantity = String(number).length;
Используя только цикл for (другого пока что не знаю):
var number = 123;
var quantity = 0;
for (i=number; i > 1; i = i / 10) {
quantity+=1;
}
Результаты сходятся, но вывод через console.log здесь не нужен.
Можно создать какую-то другую переменную, в которую записать строку. А в переменную quantitu уже записать длину строки. Т. е. quantity должна содержать число, а не строку
Вот такое решение тоже сработало:
while (number > 0) {
number = Math.trunc(number / 10);
quantity++;
}
У меня такое же не сработало, т.к. начальное значение quantity = 0 и один разряд не учитывается. Либо задавать начальное значение quantity = 1, либо еще что-то придумывать. Я добавила еще условие:
Получилось так
if (Math.trunc(number/10) === 0){
quantity = 1;
}
else{
quantity = 1;
while(Math.trunc(number/10) > 0) {
number = Math.trunc(number/10);
quantity ++;
}
}
console.log(quantity);
Мой вариант решения, довольно лаконичный, как мне кажется:
var number = 123.2;
var quantity = 0;
quantity = Math.round(number).toString().length
console.log(quantity)
Мой вариант в копилку решений, с бесконечным циклом, модулем и десятичным логарифмом.
let number = 123;
let quantity = 0;
let i = 10;
while(1) {
if (Math.abs(number) < i) {
quantity=Math.log10(i);
break;
}
i *= 10;
}
Очень простой способ в копилку решений
let number = 123;
let quantity = 0;
let del = 1; //Делитель
while ((number/del) >= 1) {
quantity++;
del *=10;
}
let number = 123;
let quantity = 0;
quantity = String(Math.trunc(number)).length;
/Решение через длину строки. Math.trunc откидывает цифры после точки, если будет дробное число). Это лучше, чем Math.round - потому что он округляет до большего, если после точки стоит цифра от 5 до 9 (8.5 … 8.9) и если было 9.9 - оно станет 10./
while (number >= 1) {
number = number / 10
quantity++
console.log(quantity)
}
достаточно коротко и просто, но если бы не было темы циклов, то самый выигрышный вариант, преобразования числа в строку, где ф-ия str.length элементарно высчитывает кол-во символов