2017-10-08 4 views
1

Also mit float wenn ich eine Zahl gebe, druckt es mit 6 Dezimalziffern. Ich weiß, dass ich die Anzahl der Ziffern mit etwas wie "% .2f" anpassen kann (dann hat die Nummer nur zwei). Aber meine Frage ist; Gibt es einen Befehl, der die genaue Anzahl der eingegebenen Ziffern ausgibt?Einstellung der Nachkommastellen

Beispiel, wenn I Eingangsnummer 2,5

Mit nur printf ("% f", Nummer); Es wird gedruckt 2.500000

Oder mit printf ("% .2f", Nummer); es wird 2,50

druckt So ist es eine Möglichkeit, dass es 2,5 (mit einer Nachkommastelle) und in der gleichen Zeit drucken kann, wenn ich Eingabenummer wie 2,51 es, diese Zahl mit 2 Dezimalstellen gedruckt werden (2.51)

+0

Es gibt keinen direkten Weg, nein. Die Variable hat keine Möglichkeit, sich daran zu erinnern, wie der Benutzer die Zahl eingegeben hat. –

+0

Wenn Sie einen Wert lesen, behandeln Sie ihn als Zeichenfolge, wandeln Sie ihn in Double/Float in separate Variable um und verwenden Sie je nach Bedarf. – Crozin

+0

Als eine binäre Gleitkommazahl werden 2,5 und 2,50 genau gleich aussehen. –

Antwort

1

Ja. Um dies zu tun, müssten Sie Code schreiben, um zu bestimmen, wie viele Stellen nach dem Dezimalpunkt Sie drucken müssen.

Ich lasse den Pseudo-Code unten an tatsächlichen Code Sie konvertieren:

value = 2.51 
places = 1 
while(testDigitsAfterDecimal(value, places) { places ++ } 
sprintf(format_string, "%%.%df", places) 
printf(format_string, value) 

Zusammenfassend: Wenn Sie Code schreiben, das Dezimalsystem mathematisch-Test für Orte folgen und halten an, wie viele Orte, die Sie Sie können diese Nummer dann in einer sprintf verwenden, um eine Formatzeichenfolge zu erstellen, die die gewünschte Anzahl von Stellen angibt. Danach können Sie diese Zeichenfolge an printf als das Format übergeben, um Ihre Nummer zu drucken.