@anyuta_ks

Почему в данном примере логические операторы так отрабатывают?

Нахожусь в самом начале пути изучения JS.

Передо мной стояла задача:
Пусть в переменной num хранится число. Если это число меньше 10 или больше 99, то выведите на экран сообщение об этом. Если же число попадает в указанный диапазон, то найдите сумму цифр этого числа. Если полученная сумма меньше или равна 9, то выведите на экран сообщение о том, что сумма цифр однозначна, в противном случае выведите сообщение о том, что сумма цифр двузначна.

Написала следующий код:
let num = 27;
if (num < 10 || num > 99) { 
        alert ('Число меньше 10 или больше 99');
    } else {
        let num2 = num%10;      // 27/10 = остаток 7
        let num1 = (num-num2)/10;      //27-7 = 20/10 = 2
        let sum = num1+num2;
        console.log (sum);
        if (sum <= 9) {
            alert ('Сумма цифр однозначна');
        } else {
            alert ('Сумма цифр двузначна');
        }
    }


При этом, если в переменную num я записываю значение 99 или 10, выводятся сообщения "Сумма цифр двузначна"/"Сумма цифр однозначна" соответственно.
Не понимаю, почему так, если я указала операторы < и >. По идее, эти значения не должны попадать в диапазон.
Однако если я использую операторы <= и >= , то значения 99 и 10 не попадают в диапазон.
Помогите, пожалуйста, разобраться, почему так получается.
  • Вопрос задан
  • 1689 просмотров
Решения вопроса 1
@Dalp
Так в чём проблема? 99 и 10 не попадают в диапазон, if не срабатывает, выполняется код в блоке else, всё правильно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kostya_yud
let num = 85;

if (num < 10 || num > 99) {
    alert('Число не попадает в диапазон!')
}
else {
    let sum = Number(String(num)[0]) + Number(String(num)[1]);
    if (sum <= 9) {
        alert('Сумма цифр однозначна')
    } else { alert('Сумма цифр двузначна') }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы