tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
3314
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HCI HCI ist offline Mitglied
    Registriert seit
    Apr 2004
    Ort
    Saarbrücken
    Beiträge
    16
    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.
     

  2. #2
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    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.
    Geändert von Kachelator (01.05.04 um 20:26 Uhr)
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  3. #3
    HCI HCI ist offline Mitglied
    Registriert seit
    Apr 2004
    Ort
    Saarbrücken
    Beiträge
    16
    mein Programm sieht in etwa (grob gesehen) so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    #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?
     

  4. #4
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    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:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    #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.
    Geändert von Kachelator (01.05.04 um 20:23 Uhr)
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

Ähnliche Themen

  1. C: sehr große Zahlen einlesen
    Von HentaiD im Forum C/C++
    Antworten: 13
    Letzter Beitrag: 14.08.10, 17:21
  2. Für große Zahlen
    Von SophieS im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 13.01.10, 13:24
  3. Bibliothek für große Zahlen
    Von Ozzy Ozborn im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 13.11.07, 16:52
  4. Kommazahlen auf ganze Zahlen Runden
    Von -GS-Master im Forum PHP
    Antworten: 1
    Letzter Beitrag: 10.04.06, 12:53
  5. Datentyp für sehr große Zahlen
    Von Stiff-Master im Forum Borland CBuilder und VCL
    Antworten: 1
    Letzter Beitrag: 14.03.05, 00:44