Hallo,
ich habe einen String in einem Label stehen, z.B. "9.18", diesen Wert lese ich aus dem Label aus und möchte ihn auf eine Nachkommastelle bringen, das mache ich so:
...String.Format("{0:F1}",textSchlittenweg.Text.ToString()),...
Es wird aber immer "9.18" ausgegeben, gewünscht wäre allerdings "9.2" oder von mir aus auch "9.1".
Hat zufällig jemand eine Idee was ich falsch mache?
Hallo Vril,
versuch es mal so
..String.Format("{0:0.0}", textSchlittenweg.Text);
siehe: http://blog.stevex.net/string-formatting-in-csharp/
Gruss
Michael
Um diese Formatbezeichner zu verwenden, muss es halt eine Zahl sein, und die Text-Property bei einem Label riecht so nach string
.
Das einfachste wäre, sie zu parsen:
decimal number;
if (decimal.TryParse(textSchlittenweg.Text, out number))
MessageBox.Show(String.Format("{0:F1}", number); // oder was du auch willlst
anstatt decimal kannst du auch double
oder float
verwenden, hauptsache ist, dass das Objekt mit dem Formatbezeichner "0.0" oder "F1" umgehen kann, was bei einem string nicht der fall ist.
mfg
SeeQuark
string=string.Substring(0,(string.IndexOf('.')+1));
+1, oder +2 aber wenn es so statisch geht das auch.
Was du willst ist doch eine Nachkommastelle oder sehe ich das falsch? Ich meine mit substring geht beides^^
Das geht natürlich auch, solange die Eingaben gleich bleiben.
Das Problem sind dann zum Beispiel :::{style="color: darkred;"}"1.2.3"){darkred}
, :::{style="color: darkred;"}"123"){darkred}
, :::{style="color: darkred;"}"hello.world"){darkred}
oder einfach nur :::{style="color: darkred;"}"."){darkred}
. Bei manchen tritt sogar eine Exception auf.
Insgesamt, also wenn man solche Sachen berücksichtigt, braucht man so etwas mehr Code, ist aber etwas schneller.
mfg
SeeQuark