C#. Как получить количество цифр, идущих после запятой?

Например, 2.1563 - 4 цифры после запятой, 15 - 0.


Ответы (2 шт):

Автор решения: aepot

Вот, навскидку написал пример

Console.Write("Введите число: ");
string input = Console.ReadLine();
if (double.TryParse(input, out double number))
{
    string[] tokens = number.ToString("G", CultureInfo.InvariantCulture).Split(".");
    int length = tokens.Length > 1 ? tokens[1].Length : 0;
    Console.WriteLine("Число содержит {0} знаков после запятой", length);
}
else
{
    Console.WriteLine("Не удалось распознать число");
}
→ Ссылка
Автор решения: Geronom

Вариант №1:

    static int GetDecimalDigitsCount(double number)
    {
        string str = number.ToString(new System.Globalization.NumberFormatInfo() { NumberDecimalSeparator = "." });
        return str.Contains(".") ? str.Remove(0, Math.Truncate(number).ToString().Length + 1).Length : 0;
    }

Вариант №2:

    static int GetDecimalDigitsCount(double number)
    {
        string[] str = number.ToString(new System.Globalization.NumberFormatInfo() { NumberDecimalSeparator = "." }).Split('.');
        return str.Length == 2 ? str[1].Length : 0;
    }

Использование:

int count = GetDecimalDigitsCount(2.1563); //count = 4
int count = GetDecimalDigitsCount(2); //count = 0

Метод можно корректировать, к примеру, на вход будет строка с разделителем запятая и т.д.

→ Ссылка