# [C++] Ganze große  Zahlen statt Zahlen mit xe+10 etc



## HCI (1. Mai 2004)

Hallo ich hab wieder ein Problem.
Ich habe en Programm , dass mir bei der Berechnung große Zahlen liefert, so im Millionenbereich und höher.

Am Ende sieht das Ergebnis z.B so aus: 7.01409e+008
Ich möchte aber gerne, dass am Ende 701409000 heraus kommt. Kann man das irgendwie in C++ implementieren?
Hoffe mir kann jemand helfen.

Gruss HCI.


----------



## Kachelator (1. Mai 2004)

Wenn du Integers verwendest, so haben diese normalerweise 32 Bit. Das ermöglicht einen Werteberich von 0 bis 4294967295 (unsigned). Reicht das nicht? Du könntest allerdings auch so Sachen wie LONGLONG verwenden (64 Bit), allerdings sind da nicht allzu viele Operationen vorhanden. Im Prinzip ist es in C++ nicth schwer, einen neuen Datentyp wie zum Beispiel 128 -Bit-Integers zu bauen und so einfach verwendbar wie eingebaute Datentypen zu machen, dank der Möglichkeit, Operatoren zu definieren. Ich bin sicher, dass es eine ganze Reihe Libs oder Header gibt, die so etwas bereits zur Verfügung stellen. Da  müsstest du mal googeln.


----------



## HCI (1. Mai 2004)

mein Programm sieht in etwa (grob gesehen) so aus:


```
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;

int main(int argc, char *argv[])
{ long double x,y,Berechnung;
  cout << "x = ";
  cin >> x;
  cout << "y = ";
  cin >>y;
  Berechnung = pow(x,y);
  cout << "B = " << Berechnung<< endl;
  system("PAUSE");	
  return 0;
}
```

Wenn ich jetzt  x = 3 und y = 21 eingebe, dann kommt  1.04604e+010
Aber ich möchte das halt mit dem e+010 verhindern.

Gibt es da eine Möglichkeit, das zu erreichen?


----------



## Kachelator (1. Mai 2004)

Meinst du, dass dich die Notation stört? Also statt " 1.04604e+010" lieber " 10460400000" (wenn ich mich jetzt nicht mit den Nullen vertan habe)?

Du kannst du das Einfügen von Streammanipulatoren das Format für die Ausgabe ändern. Beispiel:

```
#include <iomanip>

//...

std::ostream& o = std::cout; // nur meine Faulheit

double zahl = 3.1415;

o.setf( std::ios::scientific   );
o << std::setw( 24 ) << std::setprecision( 24 )  << zahl << ' ';
```
Das soll jetzt nicht genau dein Problem lösen, sondern dir nur einen Hinweis darauf geben, wonach du suchen musst. Ich habe leider gerade nicht im Kopf, welche iomanips du genau brauchst.


----------

