Как я могу получить количество общего числа цифр в номере?

Как я могу получить количество общего числа цифр в С#? Например, номер 887979789 имеет 9 цифр.

Ответ 1

Без преобразования в строку вы можете попробовать:

Math.Ceiling(Math.Log10(n));

Коррекция после комментария ysap:

Math.Floor(Math.Log10(n) + 1);

Ответ 2

Попробуйте следующее:

myint.ToString().Length

Это работает?

Ответ 3

Не напрямую С#, но формула: n = floor(log10(x)+1)

Ответ 4

Ответы уже здесь работают для целых чисел без знака, но я не нашел хороших решений для получения числа цифр из десятичных знаков и удвоений.

public static int Length(double number)
{
    number = Math.Abs(number);
    int length = 1;
    while ((number /= 10) >= 1)
        length++;
    return length;
}
//number of digits in 0 = 1,
//number of digits in 22.1 = 2,
//number of digits in -23 = 2

Вы можете изменить тип ввода с double на decimal, если точность имеет значение, но десятичное ограничение также имеет ограничение.

Ответ 5

Использование рекурсии (иногда ее спрашивают на собеседовании)

public int CountDigits(int number)
{
    // In case of negative numbers
    number = Math.Abs(number);

    if (number >= 10)
        return CountDigits(number / 10) + 1;
    return 1;
 }

Ответ 6

Ответ Стив верен, но он не работает для целых чисел меньше 1.

Здесь обновленная версия, которая работает для негативов:

int digits = n == 0 ? 1 : Math.Floor(Math.Log10(Math.Abs(n)) + 1)

Ответ 7

static void Main(string[] args)
{
    long blah = 20948230498204;
    Console.WriteLine(blah.ToString().Length);
}

Ответ 8

деление числа на 10 даст вам самую левую цифру, а затем сделать mod 10 на номер дает номер без первой цифры и повторять это, пока вы не будете иметь все цифры

Ответ 9

int i = 855865264;
int NumLen = i.ToString().Length;

Ответ 10

Это зависит от того, что именно вы хотите делать с digiths. Вы можете повторять числовые цифры, начиная с последнего до первого:

int tmp=number;
int lastDigith = 0;
do
{
    lastDigith = tmp/10;
    doSomethingWithDigith(lastDigith);
    tmp %= 10;
}while(tmp!=0);

Ответ 11

Если это возможно только для проверки, выполните следующие действия: 887979789 > 99999999

Ответ 12

Предполагая, что ваш вопрос относится к int, следующие работы для отрицательных/положительных и нулевых:

Math.Floor((decimal) Math.Abs(n)).ToString().Length

Ответ 13

конвертировать в строку, а затем вы можете подсчитать tatal no of digit методом .length. Как:

String numberString = "855865264".toString();
int NumLen = numberString .Length;