Условия задачи: “Кекс хочет, чтобы вы написали программу, которая умеет определять количество цифр в любом целом числе.”
Но в проверке тестируется решение только на натуральных числах. А надо бы еще 0, отрицательные числа и числа вида 10^n, где n - натуральное или ноль (т.е. 1, 10, 100 и т.д. - там легко допустить ошибку).
Мое решение:
var i = 1;
while (Math.abs(number / i) >= 1) {
quantity ++;
i *= 10;
}
Если честно, про Math.abs я нагуглил позднее, сперва делал конструкции типа извлечения корня из квадрата значения или проверку условия на отрицательность
Кстати, ваше решение универсально в том плане, что считает число знаков целой части даже в дробном числе.
Мой вариант, хз норм он или нет:
Сделал через вычитание, а не деление
Вычитается из number введённая переменная i
увеличиваем i в десять раз на каждом шаге цикла, пока наш number не даст отрицательное значение.
т.е. из 123 сначала вычитаем 1, если number больше единицы, то добавляем quantity ++ и так далее 10, 100, 1000
var number = 123;
var quantity = 0;
for (var i = 1; number >= 0; i*=10) {
number-=i;
if (number >= 0) {
quantity++;
}
}
console.log(quantity);
Так же можно, дабы убрать условие if, изменить начальное значение i =1 на i = 10, но тогда получится, что в нашем примере он будет получать отрицательное значение на последнем шаге, но quantity будет добавляться единица и цикл остановится только при проверке условия следующего цикла
var number = 123;
var quantity = 0;
for (var i = 10; number >= 0; i*=10) {
number-=i;
quantity++;
}
console.log(quantity);