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?

drucken

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?

War es hilfreich?

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"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top