Сколько цифр в числе
Перейти к содержимому

Сколько цифр в числе

Что такое число

В данной публикации мы рассмотрим определение числа, перечислим его основные виды и отличия от цифры, разберем принцип образования чисел и их произношение. Представленная информация сопровождается примерами для лучшего понимания.

  • Определение числа
  • Отличия чисел от цифр
  • Принцип образования чисел
  • Произношение чисел
    • Числа от 1 до 20
    • Десятки и сотни
    • Степени 10

    Определение числа

    Число – это количественная характеристика чего-либо. Используется для подсчета количества, маркировки, измерения величин и т.д. Раньше для обозначений чисел использовались черточки, однако для записи больших значений такой способ был крайне неудобен. Представьте, сколько времени бы заняло рисование черточек для записи, к примеру, числа 745.

    С развитием науки и математики в частности, была придумана десятичная система счисления, содержащая цифры 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9, которые называются арабскими. К слову, данная система применяется по сей и является самой распространенной.

    Отличия чисел от цифр

    1. Самое очевидное – числа состоят из цифр.

    Принцип образования чисел

    С помощью десяти цифр можно записать любое натуральное число. В зависимости от того, сколько цифр содержится в числе, оно может быть:

    • однозначным – состоит из одной цифры (например: 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?

    SoreMix

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

    SoreMix

    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. Заключение

    В этой краткой статье мы описали некоторые из способов найти количество цифр в целочисленном и сравнили эффективность каждого подхода.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *