2010-12-31 14 views
4

Ich habe ein List<Double>C#: Mathematische Funktionen

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

Ich brauche diese Liste in eine List<String>

konvertieren So das Ergebnis

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

im Ergebnis enthalten soll, wenn die Wert hat keine Gleitpunkte dann nicht hinzufügen müssen .0

Bitte helfen Sie mir diese

Antwort

0
 List<Double> lst=new List<Double>() { 1.0,2.409,3.0}; 
     List<string> output = lst.Select(val => val.ToString("0.######")).ToList(); 

zu tun sollten, was Sie wollen

4

Wenn Sie .NET 3.5 verwenden können Sie verwenden Linq:

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

Andernfalls können Sie diese das tun langer Weg:

var output = new List<string>(); 

foreach (int number in lst) 
{ 
    output.Add(String.Format("{0:0.###}", number)); 
} 
+0

Das funktioniert gut für das Beispiel der OP, aber nicht "im Allgemeinen", siehe meine Antwort. – arul

+0

@arul: Ich stelle fest, dass die String-Format habe ich gewählt die richtige für die Frage des OP ist, aber nicht im Allgemeinen, aber dann Frage ich die Beantwortung der OPs :) –

+0

Beantwortung im Interesse der Beantwortung nicht Korrektheit. .. d'oh. – arul

0
List lst = new List { 1.0, 2.409, 3.0 }; 
List newlist = lst.Select(val => val.ToString()).ToList(); 

Weniger Schreiben ....

+0

Entschuldigung für die Frage OT .... aber warum kann ich nicht einen Kommentar zu q & a nicht meins hinzufügen ???? –

+0

Sie benötigen mehr Reputation, http://stackoverflow.com/faq – arul

1

Hier ist meine Meinung dazu, die nicht auf Kultur Separator spezifischer Fraktion angewiesen, noch feste Menge an Dezimalstellen:

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

    if(truncated == n) { 
     return truncated.ToString("0"); 
    } else { 
     return n.ToString(); 
    } 
    } 
); 
+0

Dies ist nicht gelöscht :). Ich kann wirklich nicht verstehen, warum du es so machst, "String.Format" sollte sich um die kulturspezifischen Teile für dich kümmern. Oder fehlt mir etwas? –

+0

@Tomas Jansson: Ja :) Es gab eine andere Antwort mit dem Aufruf 'n => n.ToString(). TrimEnd ('.', '0')'. – arul

+0

@arul: diese Lösung ist völlig falsch :). Aber ich glaube nicht, dass Sie einen Vorschlag dafür haben, Sie sollten die "String.Format" -Methode nutzen. Beachten Sie, dass ich nicht sage, dass Ihre Lösung falsch ist, nur zu kompliziert :) –

Verwandte Themen