Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Zahlen mit mehr als 10 Ziffern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.02.2009, 15:50 Uhr
Dominik_88



Hi zusammen

Ich habe eine Frage:
Wie muss ich programmieren, damit auch eine Zahl mit mehr als 10 Ziffern angezeigt werden kann?
Wenn ich z.B. 1284045769345 als "int" eingebe, dann kommt eine negative Zahl oder eine kleinere Zahl raus. Ich habe mit "float" ausprobiert, aber es hilft nicht weiter.

Viele liebe Grüße

Dominik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.02.2009, 01:01 Uhr
Hans
Library Walker
(Operator)


Hi,

was genau willst Du denn machen? - Nur grosse Zahlen ausgeben? - Das macht man in C mittels Formatstring in printf, also etwa so:

C++:
printf ("%10d", zahl);


in C++ gibt es set.precision() - dazu musst du mal die Suchfunktion des Forums bemühen.

Wichtig ist aber auch die Grösse der Datentypen. Mit einem 32-Bit int lassen sich Werte zwischen -2 hoch 31 und +2 hoch 31-1 darstellen, d.h. zwischen -2147483648 und +2147483647. Das sind jeweils die maximal darstellbaren Werte, die übrigens 10 Ziffern haben.
Es empfielt sich zur Übung, mal zu gucken, was hier heraus kommt: (und warum)

C++:
i#include <stdio.h>

int main()
{
  int i=2147483647;

  printf ("i=   %d\n",i);
  i++;
  printf ("i+1= %d\n",i);

  return 0;
}


Bei mir kommt das heraus:

Code:
i=   2147483647
i+1= -2147483648


Das ist auch völlig korrekt, was einem aber erst klar wird, wenn man sich die Zahlen im Binärcode ansieht:

Code:
0111 1111 1111 1111 1111 1111 1111 1111 <=>  2147483647
1000 0000 0000 0000 0000 0000 0000 0000 <=> -2147483648


Dazu muss man noch wissen, dass das höchste Bit als Vorzeichen benutzt wird. Ist es 0, ist die Zahl positiv, ist es 1, ist sie negativ.

Wenn du keine negativen Zahlen brauchst, kannst Du unsigned int benutzen. Damit lassen sich Zahlen von 0 bis 4294967296 darstellen, was exakt 2 hoch 32 entspricht. Wenn Deine Zahlen grösser sein sollen, brauchst Du einen 64 Bit Datentyp. Das kann long int sein, muss aber nicht; das hängt vom Compiler ab.

Wenn Du Kommazahlen verwenden willst, musst Du double nehmen, weil float intern nur mit 7 Stellen arbeitet. Jede weitere Stelle bei float ist gelogen bzw. erfunden. double dagegen arbeitet intern mit 15 Stellen, kann also 10-Stellige Zahlen problemlos darstellen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.02.2009, 10:46 Uhr
~f.-th.
Gast


Wenn du mit größeren Zahlen rechnen willst,
geht mit int64 noch ein wenig mehr.

Allerdings muss dein Compiler damit klarkommen,
sonst musst du selbst entsprechende Funktionen
erstellen.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.02.2009, 17:27 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von mir selbst:

in C++ gibt es set.precision() - dazu musst du mal die Suchfunktion des Forums bemühen.


ich hab das jetzt mal selber gemacht, und dabei folgendes gefunden:
www.fun-soft.de/showtopic.php?threadid=3613
www.fun-soft.de/showtopic.php?threadid=19894
sofern es um C++ geht, solltest Du erst mal weiter kommen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 15.02.2009 um 17:28 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.02.2009, 22:29 Uhr
0xdeadbeef
Gott
(Operator)


Ich hege so ein bisschen die Vermutung, dass er eigentlich auf der Suche nach etwas wie der GMP-Bibliothek ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.02.2009, 13:32 Uhr
Dominik_88



Hi zusammen

Vielen Dank für die Antworten.

Viele liebe Grüße

Dominik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.02.2009, 16:20 Uhr
Hans
Library Walker
(Operator)


Hi alleine,


Zitat von Dominik_88:

Vielen Dank für die Antworten.

bitte sehr, dafür sind wir ja da. Mich würde jetzt aber doch noch interessieren, was Du genau gesucht hast, d.h. ob Du tatsächlich sowas wie die GMP-Bibliothek brauchst, oder eher die Grenzen der Standardtypen ausloten wolltest, und die Formatiermöglichkeiten?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: