Я пытаюсь сделать некоторое форматирование чисел, и я ищу элегантный способ форматирования чисел в списке. В качестве примера вот мой список:C# Минимальное количество значимых цифр
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 += "#";
}
}
Это должно быть 'Select', а не' ForEach'. – SLaks
Почему все понимали вопрос? – SLaks
@SLaks: Исправлено Select(), спасибо. И да, почти все, похоже, неправильно поняли вопрос ... – Mark