Mailinglisten-Archive |
Hallo Ralf, "Ralf Eggert" <ralf@in-greece.de> schrieb: > Beispiele fuer Rundungen: > > Zahl Spalte Rundung > 1.9876 FLOAT(5,2) 1.99 > 1.9876 FLOAT(5,3) 1.988 > 1.9876 FLOAT(6,4) 1.9876 > > Die Deklaration FLOAT(5,4) ist uebrigens nicht zulaessig, da D nicht > groesser als M-2 sein darf. Ist aufgrund der Vorkommastelle und des > Dezimalzeichens ja auch logisch. vielen dank für deine Ausführungen. In Oracle gibt es den Datentyp NUMBER(p,s), wobei p und s äquivalent zu M und D bei FLOAT unter MySQL sind. Na ja fast, s kann negativ werden. Aber das werde ich mir später ansehen, wie man damit verfahren kann. So bräuchte ich zunächst einfach nur p und s auf bestimmte Regeln zu überprüfen, um dann entscheiden zu können, ob ich diesen Typ nach FLOAT[(M,D)] konvertieren kann. Dabei muss natürlich die Bedingung stehen, dass Werte nicht verändert werden dürfen. Eine Regel ist jetzt zumindest klar: M >= D+2. Jetzt interessiert mich noch, wie groß darf M werden (in Abhängigkeit von D). Eine Regel wäre: if M == D + 2, max(M) = 9 (nicht über die Syntax lachen, selbst ausgedacht ;-)). Nun könnte es ja sein, dass M > 9 sein kann, wenn D < M - 2 ist. Hat sich jetzt bei meinen Tests aber nicht bestätigt. Bliebe in meinen Augen die einzige Regel: M >= D + 2, max(M) = 9. Kannst du das bestätigen oder gibt es vielleicht noch weitere Abhängigkeiten von M und D? Außer natürlich der Umkehrschluss: D <= M - 2, max(D) = 7 ;-) Außerdem interessiert mich im Hinblick auf mögliches weiters Herausfinden von Regeln anderer Datentypen, ob man solche Regeln nicht irgendwie aus der Definition des Datentyps ableiten kann. Ausprobieren ist auf Dauer mühselig und langweilig. Danke! Martin -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive