Zahlen formatieren.

Gast #543328
Lesenswert?
• ▲
▼
Einen guten Morgen allen Forenusern,
mich beschäftigt ein Frage zur Formatierten Ausgabe von Zahlen, die sich 
ja z.B. erreichen läßt mit
sprintf(irgendwas,"%04d",Zahl);
Ist die Zahl z.B. 123 gibt irgendwas 0123 aus. Leider funktioniert das 
Ganze nur bis 0 mit der Ausgabe 0000. Sobald die Zahl kleiner als 0 wird 
stimmt die Ausgabe zwar noch, aber die führenden Nullen fehlen es kommt 
also nur -4 statt -0004.
Läßt sich das beheben?
2. Besteht die Möglichkeit, die Ausgabe so zu formatieren, das auch das 
Vorzeichen immer mit ausgegeben wird, also +0123 ?
#543340
Lesenswert?
• ▲
▼
flyingwolf wrote:
> Einen guten Morgen allen Forenusern,
> mich beschäftigt ein Frage zur Formatierten Ausgabe von Zahlen, die sich
> ja z.B. erreichen läßt mit
> sprintf(irgendwas,"%04d",Zahl);
> Ist die Zahl z.B. 123 gibt irgendwas 0123 aus. Leider funktioniert das
> Ganze nur bis 0 mit der Ausgabe 0000. Sobald die Zahl kleiner als 0 wird
> stimmt die Ausgabe zwar noch, aber die führenden Nullen fehlen es kommt
> also nur -4 statt -0004.

Dann hat deine printf() einen Bug.

> Läßt sich das beheben?
> 2. Besteht die Möglichkeit, die Ausgabe so zu formatieren, das auch das
> Vorzeichen immer mit ausgegeben wird, also +0123 ?

Das Formatierzeichen + macht das.

sprintf( irgendwas, "%+04d", Zahl );

Nach sowas kann man aber auch ausgezeichnet googlen :-)

Gast #543777
Lesenswert?
• ▲
▼
>Ist das tatsächlich der reguläre Weg um dieses Problem zu lösen?

Nein. Wie Karl heinz schon schrieb, ist dein sprintf kaputt. Normales 
sprintf funktioniert selbstverständlich auch mit negativen Zahlen.

Oliver
#544053
Lesenswert?
• ▲
▼
Allerdings müßte mit

 sprintf(irgendwas,"%04d",Zahl);

und Zahl = -4  die Darstellung "-004" herauskommen, nicht "-0004", denn 
das Feld ist ja insgesamt nur 4 Stellen lang, inkl. Vorzeichen.

Stefan's Workaround fügt die Vorzeichen der Feldlänge hinzu, sodaß dort 
dann "-0004" stehen würde.


Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.