mmofacts.com

Prob. mit Zahlengröße

gepostet vor 18 Jahre, 11 Monate von Dracosan
Hi ich habe nun bald ein Problem mit zu großen Zahlen in meiner MySQL-DB.
Im alten MySQL 4 konnte ich noch den Typ Decimal 254 nehmen nu aber nur noch Decimal 65! Gibt es in MySQL 5 größere Datentypen als Decimal 65?
gepostet vor 18 Jahre, 11 Monate von Klaus
Warum nutzt du alternativ nicht float?
gepostet vor 18 Jahre, 11 Monate von Kallisti
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html


The maximum number of digits for DECIMAL or NUMERIC is 65 (64 from MySQL 5.0.3 to 5.0.5). Before MySQL 5.0.3, the maximum range of DECIMAL and NUMERIC values is the same as for DOUBLE, but the actual range for a given DECIMAL or NUMERIC column can be constrained by the precision or scale for a given column. When such a column is assigned a value with more digits following the decimal point than are allowed by the specified scale, the value is converted to that scale. (The precise behavior is operating system-specific, but generally the effect is truncation to the allowable number of digits.)


-> Nimm double...
gepostet vor 18 Jahre, 11 Monate von BuschnicK
Was um Himmels willen willst du denn zählen? NanoSekunden seit dem Urknall? Atome im Universum? Anzahl Spieler in deinem BrowserGame ;-) ?

Das ist übrigens aufrichtige Neugier - mir fällt gerade mal nichts ein...

Zur Not kannst du dir mithilfe mehrerer Zahlen Spalten oder sogar Strings immer noch deinen eigenen BigInt zusammenfrickeln. Bevor ich sowas anfinge würde ich mir an deiner Stelle aber noch mindestens 25mal überlegen ob derart grosse Zahlen wirklich unbedingt erforderlich sind.

mfG,
Sören
gepostet vor 18 Jahre, 11 Monate von BuschnicK
Ach und nochwas - ich glaube double oder float zu nehmen ist ein ganz schlechter Ratschlag wenn du wirklich 65 oder mehr Dezimalstellen Genauigkeit haben willst. Double hat AFAIK auch nur 64 bit und "vergisst" demnach immer die am wenigsten signifikanten bits. Damit kannst du dann zwar Zahlen wie 10^300 darstellen - aber eben nicht bis auf die letzte Dezimalstelle genau. Schonmal versucht einen double Wert bis 10^300 in 1er increments hochzuzählen? Irgendwann gehts einfach nicht mehr weiter, die Zahl ändert sich nicht mehr...

mfG,
Sören
gepostet vor 18 Jahre, 11 Monate von TheUndeadable
Decimal sollte sowieso nur verwendet werden, wenn es auf punktgenaue Darstellung der Nachkommestellen ankommt. Prozessoren unterstützen DECIMAL im Gegensatz zu INT nicht direkt und diese müssen daher emuliert werden.

Double würde ich verwenden, wenn es auf große Zahlen ankommt, bei denen Rundungsgenauigkeit nicht wichtig ist und es bei mehrere Milliarden nicht mehr auf dier ersten Ziffern.

Ansonsten würde es mich interssieren wofür du 254 Ziffern brauchst ;-) Dazu benötigst du übrigens 851 Bits.

Auf diese Diskussion antworten