Как я могу получить количество общего числа цифр в С#? Например, номер 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;