Испытание "Сколько цифр?"


#42

Старался использовать только изученный материал.


#44

При .length если, например, number = 123.4, то при такой формуле в консоль выведется 5…
При

if (number) {
for (var i = 1; Math.abs(number / i) >= 1; i*= 10) {
quantity++;
}
} else {quantity = 1;}
console.log('Количество циферей: ’ + quantity);

  • ответ будет верным

#45

var num: number;
var count: number = 0;
num = +prompt("Enter number");
while (num > 0) {
num = Math.floor(num / 10);
count++; }

document.write("" + count);


#46

Вариант с делением + с проверкой на отрицательное число, на ноль (один знак) и на дробное с учетом того, что пока мы в рамках курса не знаем ни Math.abs(), ни Math.floor(), ни String.length():

var number = 1234; // -1234; 1234.56; 0
var quantity = 0;

if ((number - Math.round(number)) !== 0) {
   quantity = 'Это не целое число!';
} else {
   if (number >= 1) {
   for (i = number; i >= 1; i /= 10) {
     quantity ++;
   }
 } else if (number <= -1) {
     for (i = number; i <= -1; i /= 10) {
       quantity ++;
     }
   } else {
     quantity = 1;
     }  
}

console.log(quantity);

и тоже самое, но вариант с умножением:

var number = 1234; // -1234; 1234.56; 0
var quantity = 0;

if ((number - Math.round(number)) !== 0) {
   quantity = 'Это не целое число!';
} else {
   if (number >= 1) {
   for (i = 1; i <= number; i *= 10) {
     quantity ++;
   }
 } else if (number <= -1) {
     for (i = -1; i >= number; i *= 10) {
       quantity ++;
     }
   } else {
     quantity = 1;
     }  
}

console.log(quantity);

#47

В задании указано, что нужно найти количество циферок именно в любых целых числах коим 123.4 не является. Так что в этом задании .length всё же выигрывает.


#48

Хотелось придумать как можно без округлений, и числа меньше 10, получилось следующее:var number = 1 ;
var quantity = 0;

for (var i=0; i-1<quantity;i++)
{
if (number/Math.pow(10,i)>1)
{ quantity++}
else if (number<Math.abs(10)){quantity=1}}
console.log( ‘Число состоит из ‘+quantity+’ цифр(ы)’ )

Увидел похожий код, видимо не только у меня крутилось в голове 10^i


#49

зачем мудрить, если в теории не было ни abs ни pow?
var number = 123;
var quantity = 0;

while (number >= 10) {
  quantity++;
  number /= 10;
  Math.round(number); //округление для верности
  }
  quantity++; //если условие не выполняется, то число все равно состоит хотя бы из одной цифры + решение для недостающей итерации с нулем...
console.log(quantity);

ну а так как речь идет только о положительных числах, то максимум можем прикрутить проверку на отрицательные числа обернув в условие ‘if’. Это конечно прикольно что многие знают POW ABS, но ведь курс предполагает решение задачи с учетом приобретенных знаний ранее НА ЭТОМ КУРСЕ…


#50

как ти ето сделал ??? поясни пожалуйста )))


#51

все прошло нормально:

var number = 123;
var quantity = 0;

var total=number;

while (total>=1){

 quantity++;
 
 total/=10;
                           
 console.log (total);  
 
 console.log (quantity); 
      
 }

так зачем нужен Math.abs?


#52

собственно ТС это указал первым сообщением


#53

Поняла,

спасибо.


#54
var number = 1234;
var quantity = 0;

for (var i=1; i<=number; i*=10) {
  if (Math.abs(number/i) >0) {
    quantity++
}
}
console.log(quantity)

Оцените решение)


#55

Немного отошёл от темы задания, но всё работает.

var number = 123;
var quantity = 0;

quantity = (number.toString()).length;


#56

скобки можете опустить. js последовательно применяет методы из прототипа, т.е. length берет от number.toString() и так, т.е:

var number = 123;
var quantity = number.toString().length;