Ich habe eine Reihe von Fließkommazahlen, in denen Daten mit unterschiedlichen Dezimalstellen gespeichert werden, also einige sind 123.40000
, 123.45000
, 123.45600
... jetzt, wenn ich diese Werte in der Zeichenkette ohne die 0s in der drucken möchte end in printf()
, so dass sie 123.4
, 123.45
, 123.456
sind, ohne diese 0 am Ende. Ist das möglich? Wenn ja, wie?
Verwenden Sie den% g Formatierer:
%Vor%druckt
123.4
Nachgestellte Nullen werden entfernt, aber leider auch der nachgestellte Dezimalpunkt, wenn der Bruchteil Null ist. Ich weiß nicht, ob es tatsächlich irgendeinen Weg gibt, das zu tun, was man direkt mit printf () machen möchte - ich denke, so etwas ist wahrscheinlich die beste Wahl:
%Vor%Verwenden Sie% g -
Drucken Sie ein Double in normaler oder Exponentialschreibweise, je nachdem, was für seine Größe geeigneter ist. 'g' verwendet Kleinbuchstaben, 'G' verwendet Großbuchstaben. Dieser Typ unterscheidet sich geringfügig von der Festkomma-Notation, da unwesentliche Nullen rechts vom Dezimalpunkt nicht enthalten sind. Außerdem ist der Dezimalpunkt nicht in ganzen Zahlen enthalten.
Drucken Sie auf einen (ausreichend großen) Puffer. Drucken Sie den Puffer ... und wenn es keinen '.'
im Puffer gibt, drucken Sie einen Punkt.
Bearbeiten
Der Standard gibt das #
-Flag an:
# Das Ergebnis wird in eine "alternative Form" umgewandelt. [...] Für ein, A, e, E, f, F, g und G Konvertierungen, das Ergebnis der Umwandlung eines Fließkommas Nummer enthält immer ein Dezimalzeichen, auch wenn keine Ziffern folgen es. [...] Bei g- und G-Konvertierungen werden nachfolgende Nullen nicht entfernt das Ergebnis. [...]
... aber Sie erhalten die abschließenden Nullen: (
Tags und Links c floating-point floating-accuracy