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. |