Comment faire FLOTTER de la carte/se rapportent au NOMBRE de Oracle 10g?
Quel est le type de données FLOAT dans Oracle 10g et quel rapport avec le NOMBRE?
La seule référence que je peux trouver à FLOTTER dans la documentation Oracle est dans le BINARY_DOUBLE section de cette page: http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i140621 Il semble indiquer qu'il stocke un nombre à virgule flottante et vous permet de spécifier les bits de précision, mais il ne fait pas référence au type de NUMÉRO. Le 11g documents ne mentionnent pas FLOTTER à tous.
Le livre "Expert Oracle Architecture de Base de données: Base de données Oracle 9i, 10g et 11g Techniques de Programmation et de Solutions, Deuxième Édition" dit:
En plus du NOMBRE, BINARY_FLOAT, et BINARY_DOUBLE types, Oracle du point de vue syntaxique prend en charge les types de données numériques:
Quand je dis "du point de vue syntaxique prend en charge", je veux dire qu'une instruction CREATE peut utiliser ces types de données, mais sous les couvertures, ils sont tous vraiment le type de NUMÉRO. ...
- FLOAT(p): Cartes pour le type de NUMÉRO.
Ce que je ne comprends pas, c'est comment elle correspond à un NOMBRE.
NUMBER(p)
me permet de spécifier la précision, mais l'échelle par défaut est 0. Il semble que FLOAT(p)
est la cartographie de NUMBER(decimal p, *)
, qui est, de précision fixe mais variable d'échelle, ce qui n'est pas quelque chose que le type de NUMÉRO permet aussi loin que je peux dire.
Donc, le FLOTTEUR n'est pas simplement un alias, mais fournit également le comportement de ce NOMBRE par lui-même n'offre pas?
oui, elle dit
subtype FLOAT is NUMBER; -- NUMBER(126)
, mais là encore, il dit aussi subtype BINARY_FLOAT is NUMBER;
...OriginalL'auteur takteek | 2013-07-02
Vous devez vous connecter pour publier un commentaire.
La documentation dans 10g est un peu floues. Il a amélioré un peu de 11,1 à partir de:
http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm#sthref94
En résumé,
FLOAT
est le même queNUMBER
, avec deux différencesFLOAT
ne peut pas spécifier l'échelleFLOAT
, la précision est donnée en binaire de bits, dansNUMBER
de chiffres après la virgule, doncFLOAT(126)
signifie 126 bits de précision,NUMBER(38)
moyens 38 décimales de précisionMODIFIER
Quelques exemples montrent qu'une
FLOAT
est juste unNUMBER
dans le déguisement.Être prudent, cependant, le facteur de conversion de Flotteur de précision de bits pour le Nombre de chiffres après la virgule n'est pas 3, mais autour de 3.32. Pour être exact chiffres = ceil(bits /log(2,10).
FLOAT(p)
a pas d'équivalent direct en utilisantNUMBER
? Il semble que il ya beaucoup de mauvaises informations sur l'oracle des forums et internet en général, où les gens sont confus nombre, float, binary_float, et "les nombres à virgule flottante" les uns avec les autres.Alors quelle est l'échelle de flotter?
ne peut pas être spécifié, mais est interprétée à partir des données" (la documentation d'Oracle, voir le lien ci-dessus)
Cela signifie que l'échelle peut être tout, mais le total des chiffres doit être 126. Suis-je le droit?
Non, vous ne pouvez pas spécifier l'échelle. Et non, le nombre de bits, pas de chiffres, doit être compris entre 1 et 126. Je vais modifier la réponse et ajouter quelques exemples.
OriginalL'auteur wolφi