phpbar.de logo

Mailinglisten-Archive

Verhalten von FLOAT

Verhalten von FLOAT

Martin Tröger mailinglists2@troeger-online.net
Tue Oct 29 09:22:53 2002


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