Zum Inhalt springen

[C#] String.Format Problem mit Variablen


Hüsi

Empfohlene Beiträge

Hallo zusammen,

versuch mich gerade ein wenig an C# und bastle gerade eine Stopuhr. Bei der Formatierung der Anzeige habe ich ein Problem mit führenden Nullen.

Wollte das Ganze mit String.Format lösen, habe allerdings das Problem, dass das String.Format nur genau solange funktioniert, bis ich anstatt einer Zahl die Variable einfüge:

String.Format("{0:D2}", 2) liefert wie gewünscht 02

String.Format("{0:D2}", minutes) liefert solange minutes einstellig ist auch nur einstellig die Ausgabe.

Wo ist mein Denkfehler?

Bearbeitet von Hüsi
Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin!

Ich konnte Dein Problem nicht ganz nachvollziehen.

Ich habe mir einfach mal ein kleines Testprojekt erstellt, mit einem Button und einem Label. Im OnClick des Button steht:


int bla = 2;
label1.Text = String.Format("{0:D2}", bla);
[/PHP]

Wie nicht anders erwartet ;) steht danach "02" im Label.

Welchen Typ hat denn dein "minutes"? Vielleicht liegt es ja daran.

Link zu diesem Kommentar
Auf anderen Seiten teilen

die einzelnen Variablen habe ich als String definiert

private string minutes = "", seconds ="", milliseconds="";
und fülle Sie folgendermaßen:
minutes = ((timer / 60 / 60).ToString());

seconds = (timer / 60 %60).ToString();

milliseconds = (timer %60).ToString();
das Label fütter ich so:
label1.Text = String.Format("{0:D2}", minutes) + ":" + String.Format("{0:D2}", seconds) + ":" + String.Format("{0:D2}", milliseconds);

timer selbst ist Integer.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann versuch doch einfach mal String.Format mit den Integer-Werten, statt den Strings zu fuettern.

D.h. deklariere minutes, seconds und milliseconds als integer und lass dann die Umwandlung in den String weg. Dann sollte es funktionieren.


//mit dem (int) vor der Berechnung bin ich mir nicht 100%ig sicher, aber ich meine man muss casten, da er ja FP-Zahlen erhaelt.
int minutes = (int)(timer / 60 / 60);
int seconds = (int)(timer / 60 %60);
int milliseconds = (int)(timer %60);

label1.Text = String.Format("{0:D2}", minutes) + ":" + String.Format("{0:D2}", seconds) + ":" + String.Format("{0:D2}", milliseconds);
[/PHP]

Bearbeitet von Pointerman
Code zugefuegt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...