Что такое число
В данной публикации мы рассмотрим определение числа, перечислим его основные виды и отличия от цифры, разберем принцип образования чисел и их произношение. Представленная информация сопровождается примерами для лучшего понимания.
- Определение числа
- Отличия чисел от цифр
- Принцип образования чисел
- Произношение чисел
- Числа от 1 до 20
- Десятки и сотни
- Степени 10
Определение числа
Число – это количественная характеристика чего-либо. Используется для подсчета количества, маркировки, измерения величин и т.д. Раньше для обозначений чисел использовались черточки, однако для записи больших значений такой способ был крайне неудобен. Представьте, сколько времени бы заняло рисование черточек для записи, к примеру, числа 745.
С развитием науки и математики в частности, была придумана десятичная система счисления, содержащая цифры 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9, которые называются арабскими. К слову, данная система применяется по сей и является самой распространенной.
Отличия чисел от цифр
- Самое очевидное – числа состоят из цифр.
Принцип образования чисел
С помощью десяти цифр можно записать любое натуральное число. В зависимости от того, сколько цифр содержится в числе, оно может быть:
- однозначным – состоит из одной цифры (например: 2, 6, 7). Самое маленькое однозначное число – это единица, самое большое – 9.
- двузначным – состоит из двух цифр (например: 14, 52, 60, 78 и т.д.). Самое маленькое двузначное число – это 10, самое большое – 99.
Примеры:
1. Число “пятьдесят восемь” пишется так – “58”. То есть мы расставляем цифры по соответствующим разрядам:
- “8” – в единицах;
- “5” – в десятках.
2. Чтобы записать число “шестьсот двадцать шесть” нам нужны только две цифры – “6” и “2”, несмотря на то, что оно трехзначное:
- “6” – в единицах и сотнях;
- “2” – в десятках.
Использование запятой
Для записи чисел могут использоваться не только цифры, но и запятые (в некоторых странах – точки). Делается это для отделения целой и дробной частей. Например:
- 120,5
- 306,71
- 221,409
Определение, запись, произношение и свойства десятичной дроби мы подробно рассмотрели в отдельной публикации.
Как определить количество цифр в числе, не выделяя каждую отдельную цифру, с использованием str?

Сколько цифр в числе 1010, если оно записано в двоичной, десятичной, шестнадцатеричной?

SoreMix, так. По порядку. Если число, любое. Но если переменную, в которой хранится это число, перевести в его строковое представление, то количество цифр в этом строковом представлении будет разное для разных систем счисления, которое это строковое представление представляет.
Пример:
Дано число 65535.
В двоичном строковом представлении это 1111111111111111, то есть 16 цифр.
В восьмеричном строковом представлении это 177777, то есть 6 цифр.
В десятичном строковом представлении это 65535, то есть 5 цифр.
В шестнадцатиричном строковом представлении это FFFF, то есть 4 цифры.Количество цифр в целом в Java
Изучите различные способы получения количества цифр в целом в Java.
- Автор записи
1. введение
В этом кратком руководстве мы рассмотрим различные способы получения количества цифр в целочисленном в Java.
Мы также проанализируем эти различные методы и выясним, какой алгоритм лучше всего подходит для нашей ситуации.
Дальнейшее чтение:
Как округлить число до N десятичных знаков в Java
Проверьте, является ли строка Числовой в Java
Практическое руководство по десятичному формату
2. Количество цифр в целочисленном числе
Для методов, обсуждаемых здесь, мы рассматриваем только положительные целые числа. Если мы ожидаем каких-либо отрицательных входных данных, то мы можем сначала использовать Math.abs(число) перед использованием любого из этих методов.
2.1. Решение На основе строк
Возможно , самый простой способ получить количество цифр в Integer – это преобразовать его в String и вызвать метод length () . Это вернет длину Строки представления нашего числа:
Но это может быть неоптимальным подходом, так как этот оператор включает выделение памяти для строки для каждой оценки . JVM должен сначала проанализировать наш номер и скопировать его цифры в отдельную Строку , А также выполнить ряд различных операций (например, сохранение временных копий, обработка преобразований Юникода и т. Д.).
Если у нас есть только несколько чисел для оценки, то мы можем явно пойти с этим решением – потому что разница между этим и любым другим подходом будет пренебрегаться даже для больших чисел.
2.2. Логарифмический Подход
Для чисел, представленных в десятичной форме, если мы возьмем их логин в базе 10 и округлим его, то получим количество цифр в этом числе:
Обратите внимание, что log 10 0 какого-либо числа не определено. Итак, если мы ожидаем каких-либо входных данных со значением 0 , тогда мы можем проверить и это.
Логарифмический подход значительно быстрее, чем подход на основе String , поскольку ему не нужно проходить процесс преобразования данных. Это просто включает в себя простой, простой расчет без какой-либо дополнительной инициализации объекта или циклов.
2.3. Повторное Умножение
В этом методе мы возьмем временную переменную (инициализированную в 1) и будем непрерывно умножать ее на 10, пока она не станет больше нашего числа. Во время этого процесса мы также будем использовать переменную length , которая будет отслеживать длину числа:
В этом коде строка temp совпадает с записью temp = (temp << 3) + (temp << 1) . Поскольку умножение обычно является более дорогостоящей операцией на некоторых процессорах по сравнению с операторами сдвига, последние могут быть немного более эффективными.
2.4. Деление на две степени
Если мы знаем о диапазоне нашего числа, то мы можем использовать вариацию, которая еще больше сократит наши сравнения. Этот метод делит число на степени двух (например, 1, 2, 4, 8 и т. Д.):
Этот метод делит число на степени двух (например, 1, 2, 4, 8 и т. Д.):
Он использует тот факт, что любое число может быть представлено сложением степеней 2. Например, 15 можно представить в виде 8+4+2+1, которые все являются степенями 2.
Для 15-значного числа мы бы провели 15 сравнений в нашем предыдущем подходе, который мы сократили до 4 в этом методе.
2.5. Разделяй и властвуй
Это, возможно, самый громоздкий подход по сравнению со всеми другими, описанными здесь, но излишне говорить, этот самый быстрый , потому что мы не выполняем никакого типа преобразования, умножения, сложения или инициализации объекта.
Мы получаем наш ответ всего в трех или четырех простых утверждениях if :
Подобно предыдущему подходу, мы можем использовать этот метод только в том случае, если мы знаем о диапазоне нашего числа.
3. Бенчмаркинг
Теперь, когда у нас есть хорошее понимание потенциальных решений, давайте проведем простой бенчмаркинг всех наших методов с использованием жгута Java Microbenchmark (JMH) .
В следующей таблице показано среднее время обработки каждой операции (в наносекундах):
Решение на основе String , которое является самым простым, также является самой дорогостоящей операцией, поскольку это единственная операция, которая требует преобразования данных и инициализации новых объектов.
Логарифмический подход значительно более эффективен по сравнению с предыдущим решением, поскольку он не требует преобразования данных. И, будучи однострочным решением, это может быть хорошей альтернативой подходу на основе String – .
Повторное умножение включает в себя простое умножение, пропорциональное длине числа; например, если число состоит из пятнадцати цифр, то этот метод будет включать в себя пятнадцать умножений.
Однако самый следующий метод использует тот факт, что каждое число может быть представлено степенями двух (подход, аналогичный BCD), и сводит то же самое к 4 операциям деления, поэтому он еще более эффективен, чем первый.
Наконец, как мы можем заключить, наиболее эффективным алгоритмом является многословная реализация “Разделяй и властвуй” , которая дает ответ всего в трех или четырех простых операторах if. Мы можем использовать его, если у нас есть большой набор данных чисел, которые нам нужно проанализировать.
4. Заключение
В этой краткой статье мы описали некоторые из способов найти количество цифр в целочисленном и сравнили эффективность каждого подхода.