Я пытаюсь отформатировать числа и ищу элегантный способ форматирования чисел в списке. В качестве примера вот мой список:
List<double> list =
new List<double>(new double[] {34.8, 35.0, 35.7, 35.9, 38.0});
Если я распечатаю их, используя list.ForEach(x => Console.WriteLine(x.ToString("#")))
, я получу:
35
35
36
36
38
Что не совсем правильно. Я хочу отобразить минимальное количество значащих цифр, чтобы убедиться, что каждый результат уникален (при условии отсутствия дубликатов). Так что для вышеупомянутого строка форматирования будет "#. #", Так что я получу один десятичный знак.
Если это числа: {35, 37, 40, 41, 42}
Я не хочу использовать "#. #" Я хочу использовать "#", потому что я не хочу тратить пространство, печатая ".0", когда это на самом деле не имеет значения.
Меня очень сильно беспокоит число цифр слева от десятичной дроби.
Это мой взломанный код, но я надеюсь, что есть более элегантный способ сделать это. Я в основном пытаюсь оптимизировать это:
bool unique = false;
string format = "#."
List<string> strings = new List<string>();
while (!unique)
{
strings = List.Select(x => x.ToString(format)).Distinct().ToList();
if (strings.Count() == list.County())
{
unique = true;
}
else
{
format += "#";
}
}