2016-07-20 8 views
0

Eine doppelte Variable vom Typ hält den Wert in der wissenschaftlichen form.Lets sagenWie in Bezug auf jede gewünschte Leistung

v=1.3657e-07 

ich möchte zeigen Sie es in Potenzen von -09 eine wissenschaftliche Anzahl aller Macht anzuzeigen. Im Etikett sollte es aussehen wie

136.57 

Wie kann ich das tun? Gibt es irgendeine Funktion in iomanip? oder es muss manuell gemacht werden?

Antwort

3

Wenn Sie meinen, wie durch 10 in C++ eine Zahl multiplizieren, das ist einfach * 1e9.

Wenn Sie buchstäblich bedeuten, wie die Zahl in Bezug auf die Befugnisse von 9, das heißt in der Basis 9 System zum Ausdruck bringen, dann:

Es gibt keine direkte Unterstützung für die allgemeine Anzahl Systemumstellungen in C++.

Ein einfacher Ansatz ist es, den 9-Logarithmus der Zahl zu nehmen. Der Bruchteil gibt Ihnen eine Mantisse, und der ganzzahlige Teil gibt Ihnen einen Exponenten. Berechnen Sie dann die Basis 9-Darstellung der Mantisse.

Der Logarithmus der Basis R einer Zahl x ist ln (x)/ln (R).

Um die erste Basis 9 Stelle einer Zahl x < 1 zu berechnen, multipliziere sie einfach mit 9. Zerhacke diese Ziffer, speichere sie und wiederhole sie. Im Wesentlichen verschiebt die Multiplikation die Ziffernfolge um 1 Schritt nach links.

2

Wenn ich die Frage richtig verstehe, möchten Sie es so anzeigen, als ob der Exponent -9 statt -7 wäre (in diesem Fall wäre Ihre Zahl 136.57).

Um dies zu tun, einfach multiplizieren durch die richtige Leistung und verwenden, um die gewünschte Präzision:

cout << fixed << setprecision(2) << (v * 1e9) 

Hoffnung, das hilft.