C ++, wissenschaftliche Notation, Formatnummer

8

Ist es möglich, Zeichenketten in wissenschaftlicher Notation auf folgende Arten zu formatieren:

  • feste Orte im Exponenten setzen: 1
  • setze feste Dezimalstellen in Mantisa: 0

    %Vor%

Also sollte die Nummer formatiert werden

%Vor%

Ich kann keine 0 Dezimalstellen für Mantisa setzen:

%Vor%

Ergebnis:

%Vor%     
abcdef 20.08.2011, 16:07
quelle

4 Antworten

3

Ich bin mir nicht sicher, welchen C ++ - Compiler Sie verwenden, der Ihnen drei Ziffern für den Exponenten gibt - die C- und C ++ - Standards erfordern dafür mindestens zwei Ziffern, und genau das tut g ++. Es gibt keine Möglichkeit, mit den Standard-C- oder C ++ - E / A-Funktionen nur eine Ziffer zu erhalten, daher müssen Sie Ihre eigene Lösung rollen lassen. Da eine Umwandlung von Fließkomma in Zeichenfolgen ein sehr kniffliges Problem ist [PDF], Ich würde dringend empfehlen, dies nicht zu tun und stattdessen das Ergebnis nachzubearbeiten.

Hier ist eine Möglichkeit, das zu tun:

%Vor%     
Adam Rosenfield 20.08.2011, 17:11
quelle
3

Ich kann nicht herausfinden, wie man eine einzelne Ziffer im Exponentenfeld erhält, aber das Folgende stimmt mit allen anderen Anforderungen überein.

%Vor%

Ausgabe:

  

1e + 05

BEARBEITEN:
Hat eine schnelle Suche durch den Standard (N3291) gemacht und konnte bei Verwendung der wissenschaftlichen Notation nichts finden, was über die Anzahl der Stellen im Exponentenfeld sprach. Dies könnte eine Implementierung sein.

    
Praetorian 20.08.2011 16:44
quelle
2

Sie können wirklich alles formatieren, sobald Sie eine Zeichenfolge haben .. mehr C ++ - Code würde wie folgt aussehen:

%Vor%

Ausgabe:

%Vor%

Sie können die Exponentengröße in expSize festlegen, und dies funktioniert für beliebige große Exponenten.

Ich hoffe, es hilft!

    
Raven 20.08.2011 17:45
quelle
1

Hier ist eine Stream-Lösung:

%Vor%

Anwendungsbeispiel:

%Vor%

Ausgabe: 1.2e0 1.234e0

    
IceFire 11.11.2016 14:01
quelle

Tags und Links