Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » long int zu klein.

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 < [ 2 ]
000
05.07.2003, 09:47 Uhr
Uli



Hallo,

ich habe in meinem Programm viele Berechnungen zu machen.
eine davon ist die Potenz zu bilden. Da die Potenz aber zu sehr sehr großen Werten führen kann reicht der Wertebereich von long int nicht mehr aus.
Welche möglichkeiten habe ich noch mit großen zahlen zu arbeiten?

Danke

Mfg Uli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.07.2003, 13:52 Uhr
virtual
Sexiest Bit alive
(Operator)


Wenn Du einen C Compiler (nicht C++) Dein eigen nennst, kannst Du long logn verwenden. Auf den meisten Systemen hat dieser Datentyp 64 an Stelle von 32 Bit.
Wenn Du in C++ arbeitest oder aber 64 Bit noch immer zu klein sind, kannst Du entweder auf Fließkommazahlen (float, double, long double) umsteigen (vorsicht: Die haben zwar einen wesentlich Größeren Wertebreich aber eine ziemlich schlechte Rechengenauigkeit), oder aber eine entsprechende Klasse für Große zahlen selberschreiben bzw aus dem netz saugen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.07.2003, 14:11 Uhr
~Uli
Gast


Grüße virtual,

ich schreibe unter visual C++ 6.0.
Wie rundet der die? in den Berechnungen die von mir durchgeführt werden entstehen keine ,xxxxxxxx werte. Es sind alles ganze Zahlen. Werden aber auch diese ab eine größe gerundet? (wie beim Excel)
wenn ja nütz es mir nichts. muß mit den exakten werten arbeiten.

Von Klasse schreiben habe ich keine ahnung.

Ich schaue mal ob float und co gehen.

Danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.07.2003, 16:22 Uhr
~Uli
Gast


Grüße,

na so was aber auch. der operator "^" arbeitet doch nicht mit float.
Ich denke ab noch ein anderes Problem gefunden zu haben.
das Berechnen meines wertes wird bei 10 stellen abgebrochen (was eine int größe ist) die vereinbarung auf long wird nicht richtig umgesetzt. und das muß ich bei mir Prüfen.

Aber für weiter Idee bin ich immer offen.

Bye
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.07.2003, 16:48 Uhr
Spacelord
Hoffnungsloser Fall


Wie virtual geschrieben hat long long !!
Und wenn das nicht reicht schreib dir einen eigenen Datentyp!

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.07.2003, 19:46 Uhr
Tommix



Hallo,
Visual C++ kennt auch __int64 für solche Zwecke (ist aber nicht portabel).

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.07.2003, 20:47 Uhr
~0xdeadbeef
Gast


Ähm...der Operator '^' ist ein binäres entweder-oder, nicht die Potenz.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.07.2003, 11:45 Uhr
ao

(Operator)


@Uli:
Damit man dir gezielt helfen kann, müßtest du mal genauer sagen, welche Anforderungen du an die Potenzberechnung hast; einfach nur "größere Zahlen" ist nämlich zu wenig:
1. Hast du nur ganzzahlige Berechnungen oder treten auch Nachkommastellen auf?
2. Wie groß werden die Zahlen, mit denen du umgehen mußt? Gibt es eine Obergrenze?
3. Kannst du mit Rundungsfehlern leben? In welcher Größenordnung?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.07.2003, 14:02 Uhr
Pablo
Supertux
(Operator)


Zum Problem des ^ Operators

Wie 0xdeadbeef sagte, ^ ist XOR. XOR arbeitet nur mit ganzen Zahlen, weil nur ganzen Zahlen binär codiert werden können. Fliesskommazahlen können auch binär codiert werden, aber als zweier komplement.

Es gibt die Funktion
float pow(float,float) und sie befindet sich in math.h (unter Linux ist sie dort zu finden und man compileirt g++ datei.cpp -lm). Ich nehme an, dass unter Windows auch die Datei da sein soll.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
07.07.2003, 18:43 Uhr
~Uli
Gast


Hallo.

Also also es würde schon gut sein wenn es keine obergrenze geben würde. Bei der Potenzierung kommen nur ganzzahlige werte raus. Diese werden aber mit der Modulo funktion weiter bearbeitet. Was nicht weiter stören dürfte da bei Modulo auch nur ganzzahlige werte raus kommen.
Also es gibt keine Nachkommastellen. dafür kann ich mit rundungsfeher garnicht umgehen. Wenn ein wert zugroß wird kann ich ihn halt nicht verwenden. Runden ist nicht zulässig.

Danke.

Bye de Uli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


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: