Этот калькулятор извлекает вторую цифру целого числа — ту, что стоит сразу после старшего разряда. Внутри работает арифметический приём: число последовательно делят на 10, пока не останется двузначное, а затем берут его последнюю цифру.
Под второй цифрой обычно понимают цифру на второй позиции слева, то есть разряд сразу после самого старшего. Для числа 4738 это 7, а для числа 5729 — тоже 7, хотя разряды у чисел разные.
Задачу решают двумя способами. Арифметический работает только с числами: пока значение не меньше 100, его делят на 10 нацело, отбрасывая последнюю цифру. Когда остаётся двузначное число, его последняя цифра и есть искомая — это остаток от деления на 10.
Второй, строковый способ проще для понимания: число превращают в текст и берут символ с индексом 1. Но он требует преобразования типов, поэтому в вычислениях арифметический вариант обычно быстрее.
Пример 1. Для числа 5729: 5729 ≥ 100, значит 5729 ÷ 10 = 572; снова 572 ≥ 100, получаем 57. Теперь 57 < 100, и остаток 57 mod 10 = 7.
Пример 2. Для числа 4738: 4738 → 473 → 47, остаток 47 mod 10 = 7.
Пример 3. Для двузначного числа 99 цикл не выполняется вовсе, и вторая цифра равна 99 mod 10 = 9. Для числа 10 вторая цифра — 0.
Работа алгоритма на разных числах
| Число | После делений | Вторая цифра |
|---|---|---|
| 5729 | 57 | 7 |
| 4738 | 47 | 7 |
| 99 | 99 | 9 |
| 10 | 10 | 0 |
Нужно сохранить две последние значащие цифры: после деления до 10 остался бы старший разряд, а не второй. Порог 100 оставляет ровно двузначное число.
Сначала берут модуль числа, иначе знак исказит деление. В калькуляторе так и сделано: используется абсолютная величина.
Для дробей берут целую часть. Калькулятор округляет вниз по модулю и дальше работает только с целым значением.
В учебных задачах и языках со строгой типизацией он короче. Но преобразование в строку дороже, поэтому в циклах и больших объёмах данных чаще выбирают арифметику.