C #: математические функции - PullRequest
4 голосов
/ 31 декабря 2010

У меня есть List<Double>

  List<Double>lst=new List<Double>{ 1.0,2.409,3.0}

Мне нужно преобразовать этот список в List<String>

Таким образом, результат должен содержать

    { "1","2.409","3"}

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

Пожалуйста, помогите мне сделать это

Ответы [ 4 ]

4 голосов
/ 31 декабря 2010

Если вы используете .Net 3.5, вы можете использовать Linq:

lst.Select(n => String.Format("{0:0.###}", n));

В противном случае вы можете сделать это длинным путем:

var output = new List<string>();

foreach (int number in lst)
{
    output.Add(String.Format("{0:0.###}", number));
}
1 голос
/ 31 декабря 2010

Вот мое мнение об этом, которое не зависит от конкретного дробного разделителя или фиксированного количества десятичных знаков:

var result = lst.Select(
  n => { 
     double truncated = Math.Truncate(n);

     if(truncated == n) {
       return truncated.ToString("0");
     } else {
       return n.ToString();
     }
  }
);
0 голосов
/ 31 декабря 2010
List lst = new List { 1.0, 2.409, 3.0 };
List newlist =  lst.Select(val => val.ToString()).ToList();

Меньше пишу ....

0 голосов
/ 31 декабря 2010
        List<Double> lst=new List<Double>() { 1.0,2.409,3.0};
        List<string> output = lst.Select(val => val.ToString("0.######")).ToList();

должен делать то, что вы хотите

...