konvertieren astronomisch große Zahlen in lesbare Form in C / C ++

8

Mein Programm druckt RIESIGE Zahlen aus - wie 100363443, bis zu einer Billion - und es ist schwer, sie zu lesen, daher möchte ich jede Zahl in leicht lesbarer Form drucken.

jetzt benutze ich

%Vor%

Format

Ich würde eine resultierende Zahl mit printf schätzen. Der größte Teil meines Codes ist C ++. Ich möchte jedoch nicht std :: cout einführen, da ich bereits printf

habe

Danke

    
vehomzzz 30.09.2009, 16:11
quelle

6 Antworten

12

Verwenden Sie das nicht standardmäßige apostrophe -Flag in der PrintF-Formatzeichenfolge, wenn Sie diese Option verfügbar haben und es Ihnen nichts ausmacht, ein wenig Portabilität zu verlieren.

Laut meiner Dokumentation ist das Flag ' für POSIX

Wenn Sie auf Unix, Linux, Mac, ... sind, sollten Sie kein Problem haben Wenn Sie unter Windows, DOS, iSeries, Android, ... sind, sind alle Wetten ausgeschaltet (aber Sie können vielleicht eine POSIX-Schicht in Ihrem System installieren).

%Vor%

Auf meinem System erzeugt dieses Programm:

%Vor%     
pmg 30.09.2009, 17:35
quelle
9

Sie könnten humanize_number () verwenden, das Suffixe wie k, m usw. verwendet, um die Ziffern niedriger Ordnung wegzulassen. Dies ist keine Standardroutine, daher sollten Sie die Quelle, mit der ich verlinkt bin, d. (2-Klausel-BSD-Lizenz, erlaubt jede Art von Verwendung.)

Humanize_number man-Seite .

Humanize_number-Quellcode von NetBSD .

%Vor%

Dies funktioniert durch Anhängen von Suffixen wie folgt:

%Vor%     
DigitalRoss 30.09.2009 16:23
quelle
7

Einfacher Weg könnte sein, vor der Ausgabe in ein Double umzuwandeln und% e zu verwenden, das sie in exponentieller wissenschaftlicher Notation ausgibt. Versuchen Sie Folgendes:

%Vor%     
Daniel Bingham 30.09.2009 16:19
quelle
6
%Vor%

Beachten Sie, dass die Zahl ein Float

ist

EDIT: oder wenn Sie nicht wissenschaftlich mögen, fand ich das im Internet:

%Vor%

BEARBEITEN SIE 2: Wie von Jerry erwähnt, brauchen Sie nicht die Komma-Klasse wie oben, das scheint ausreichend (obwohl es vermutlich Locales gibt, die keine großen Zahlen überhaupt formatieren?):

%Vor%     
Patrick 30.09.2009 16:26
quelle
3

Merken Sie sich die Lokalisierung (besonders wenn Sie eine Bibliothek schreiben).
In Europa (außer Großbritannien) wären es 1.000.000 statt 1.000.000

    
Martin Beckett 30.09.2009 16:26
quelle
1

Hier ist ein Beispiel, das ich gerade geschrieben habe, ohne locale zu verwenden. Funktioniert nur für Positives. (Viel Hilfe von "DiscoVlad")

%Vor%     
Lance Rushing 30.09.2009 18:08
quelle

Tags und Links