Maximale Druckfeldbreite für Zahlen angeben (ggf. abschneiden)?

9

Sie können Zeichenfolgen mit einem printf Feldbreitenbezeichner abschneiden:

%Vor%

Leider funktioniert es nicht für Zahlen (das Ersetzen von d mit x ist dasselbe):

%Vor%

Gibt es eine einfache / triviale Möglichkeit, die Anzahl der zu druckenden Ziffern anzugeben, selbst wenn dies bedeutet, dass eine Zahl abgeschnitten wird?

MSDN ausdrücklich sagt, dass es nicht passieren wird , was unnötig einschränkend zu sein scheint. (Ja, es kann getan werden, indem Strings und ähnliches erzeugt werden, aber ich hoffe auf einen "printf-Trick" oder kluger Klud.)

    
Synetech 31.03.2012, 04:54
quelle

5 Antworten

16
Wie viele meiner besten Ideen kam die Antwort zu mir, während ich im Bett lag und darauf wartete einzuschlafen (es gibt zu dieser Zeit nicht viel anderes zu tun als zu denken).

Benutze Modul!

%Vor%

Es ist nicht ideal, weil es nicht von links abgeschnitten werden kann (z. B. 12 anstelle von 34 ), aber es funktioniert für die wichtigsten Anwendungsfälle. Zum Beispiel:

%Vor%     
Synetech 31.03.2012, 16:27
quelle
3

Wenn Sie von rechts abschneiden möchten, können Sie Ihre Zahl in eine Zeichenfolge konvertieren und dann den Zeichenfolgenfeldbreitenspezifizierer verwenden.

%Vor%     
Johannes Luong 12.05.2013 12:08
quelle
1

Beispiel aus der Bash-Befehlszeile:

%Vor%     
adrigiga 20.04.2017 13:09
quelle
0

Sie können snprintf verwenden, um von rechts

abzuschneiden %Vor%     
KarlR 09.02.2014 00:57
quelle
0

Warum nicht von links? Der einzige Unterschied besteht in der einfachen Aufteilung:

%Vor%     
troy 20.03.2014 12:54
quelle