Freaka Geschrieben 2. Juli 2004 Geschrieben 2. Juli 2004 Hi, ich habe ein Problem, weiß allerdings nicht wo das rein gehört. Ich schreibe grade an einer Software mit der man VIA SNMP Statistiken auslesen kann. Das Funktioniert auch sauber. Allerdings sind einige Wert so groß, dass sie nicht mehr in Cardinal Variablen rein passen. Womit kann ich eine Größere Zahl Speichern sollte im Milliarden bereich sein bis zu 100Milliarden Zitieren
developer Geschrieben 2. Juli 2004 Geschrieben 2. Juli 2004 Mhhhh... Größer geht wohl nicht... Und wenn du die Zahl in ein CHar Array wandelst oder vorher kürzt? Muss die Zahl so genau sein? Rechnest du denn damit dann noch? Zitieren
Freaka Geschrieben 2. Juli 2004 Autor Geschrieben 2. Juli 2004 Ja wollte ich, damit weiter rechenen. Die Werte müssen schon stimmen. Kann ich den damit nocht weiter rechnen wenn ich sie in ein Char Array wandle. Zitieren
etreu Geschrieben 2. Juli 2004 Geschrieben 2. Juli 2004 Ich weiss zwar nicht, bis wohin Cardinal geht, weil ich keine Ahnung von Delphi habe, aber warum speicherst du die Zahl nicht in einem anderen Zahlensystem (z.B. zur Basis 20, 30 oder 100)? Ist der Datentyp begrenzt, auf die Länge der (sprich vor und nach dem Komma), oder stört dich "nur" die Überlaufgrenze des Bereichs. Wenn letzeres der Fall ist, verschiebe das Komma der Zahlen nach links. Zitieren
FINF2 Geschrieben 2. Juli 2004 Geschrieben 2. Juli 2004 :eek: An deiner sog. Website besteht wirklich noch erheblicher Nacholbedarf. Aber selbst ein Anfänger im webdesign würde niemals weiße Schrift auf einen fast weißen Hintergrund verwenden. Ich bin Systemintegrator und kann das um einiges besser. Wie meinst du das mit anderen Zahlensystemen. Wie machst du denn das bitte mit Basis 100? Würde mich auch mal interresieren. Zitieren
ShoAn Geschrieben 2. Juli 2004 Geschrieben 2. Juli 2004 es gibt die möglichkeit jede einzelne ziffer der großen zahl in eine (doppelt) verkette liste oder dynamischen array zu speichern und dann wie in der schule auf papier damit rechnen. Zitieren
etreu Geschrieben 4. Juli 2004 Geschrieben 4. Juli 2004 Ganz normales Umrechnen in ein anderes Zahlensystem. Musst ja nicht 100 nehmen. Geht eben auch 16, ist wohl auch geläufiger. Zitieren
geloescht_JesterDay Geschrieben 5. Juli 2004 Geschrieben 5. Juli 2004 Allerdings sind einige Wert so groß, dass sie nicht mehr in Cardinal Variablen rein passen. Womit kann ich eine Größere Zahl Speichern sollte im Milliarden bereich sein bis zu 100Milliarden Cardinal = 32bit ohne Vorzeichen. Probier doch mal Int64 als Typ, also 64bit, mit vorzeichen. 2^63-1 ist dabei der größte Wert, sollte also reichen. Arithmetische Operationen in Delphi liefern allerdings nur dann Int64 zurück, wenn sie für einen oder mehrere Int64 Operanden ausgeführt werden. Int64 + Cardinal liefert also ein falsches Ergebnis, Int64 + Int64(Cardinal) allerdings das richtige. Die Int64 Implementierung in Delphi ist aber wie ich mal gelesen habe nicht 100% korrekt, also vorallem Geschw.-mäßig wäre es da noch nich so toll. Für ein paar Berechnungen sollte das aber kaum auffallen, da die unterschiede eh im ms Bereich lagen (wenn da auch doch recht hoch). EDIT: Noch eine Anmerkung aus der Delphi-Hilfe: Einige Standardroutinen mit Integer-Argumenten verkürzen Int64-Werte auf 32 Bit. Die Routinen High, Low, Succ, Pred, Inc, Dec, IntToStr und IntToHex unterstützen Int64-Argumente jedoch vollständig. Auch die Funktionen Round, Trunc, StrToInt64 und StrToInt64Def liefern Int64-Werte zurück. Einige wenige Routinen können keine Int64-Werte verarbeiten. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.