Frage
Es ist schon eine ganze Weile, da habe ich letzte D Programming Language , und jetzt ist es verwende ich für einige Projekt, das wissenschaftliche Berechnungen miteinbezieht.
Ich habe eine Reihe von Gleitkommadaten, aber wenn ich sie writefln
mit drucken, erhalte ich Ergebnisse wie: 4.62593E-172
, die eine Null ist! Wie verwende ich Zeichenfolge Sachen Formatierung% solche Dinge wie: 0?
Im Moment verwende ich einen Hack:
if( abs(a) < 0.0000001 )
writefln(0);
else
writefln(a);
es macht den Job, aber ich will es tun, um die Formatierung Operationen verwenden, wenn möglich.
UPDATE
jemand vorgeschlagen writefln("%.3f", a)
aber das Problem mit ihm ist, dass es unnötig zusätzliche Nullen druckt, das heißt 0
wird 0.000
und 1.2
wird 1.200
Kann ich die nachfolgenden Nullen machen entfernen Sie es auch?
Lösung
Kurze Antwort:. Dies kann nicht mit printf Formatbezeich erfolgen
Da D die gleiche Formatierung wie C99 des vsprintf()
verwendet, können Sie Ihre Antwort in diesem Thread finden: Vermeiden Sie Nullen in printf Hinter ()
Andere Tipps
Versuchen Sie so etwas wie
writefln("%.3f", a);
Federico Antwort sollte funktionieren, um weitere Informationen zu überprüfen, das Format Bezeich Abschnitt.
Ich sehe, Sie zur Zeit Phobos verwenden, aber was Sie versuchen, in Tango unterstützt zu tun ist.
Stdout.formatln("{:f2}", 1.2);
druckt "1.20"