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
Метод можно корректировать, к примеру, на вход будет строка с разделителем запятая и т.д.