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 ?
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
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
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.