par
sirakawa » 12 oct. 2011, 10:19
Il l'a lu dans la documentation que voici:
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
Un nombre à virgule flottante littéral. Il se comporte comme une colonne de type CHAR: ``littéral'' (``unpacked'') signifie que le nombre est stocké sous forme de chaîne : chaque caractère représente un chiffre. La virgule décimale et le signe moins ‘-’ des nombres négatifs ne sont pas comptés dans M (mais de l'espace leur est réservé). Si D vaut 0, les valeurs n'auront pas de virgule décimale ou de partie décimale. L'intervale de validité du type DECIMAL est le même que DOUBLE, mais le vrai intervalle de validité de DECIMAL peut être restreint par le choix de la valeur de M et D. Si UNSIGNED est spécifié, les valeurs négatives sont interdites.
Si D est omis, la valeur par défaut est 0. Si M est omis, la valeur par défaut est 10.
Avant MySQL Version 3.23, l'argument M devait inclure l'espace nécessaire pour la virgule et le signe moins.
DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]
Ce sont des synonymes pour DECIMAL.
Le nombre est stocké comme une suite de chiffres en arrondissant les décimales au nombre indiqué.
Mysql dispose d'une arithmétique intégrée de ce type de nombres qui est surtout utilisé en compta pour obtenir ce qu'on appelle une précision absolue... Les algorithmes de calcul en sont particulièrement coriaces, mais bien connus...
Je viens de vérifier avec Mysql en ligne de commande : le nombre est stocké exactement sous la forme où il est entré; si le nombre de décimales dépasse D, il est arrondi; si la longueur de la saisie dépasse M, le nombre devient 99999.99...
Je n'ai pas testé ce que PHP faisait de ces valeurs...
Le décimal codé binaire fai(sai)t la même chose.
Il l'a lu dans la documentation que voici:
[quote]DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
Un nombre à virgule flottante littéral. Il se comporte comme une colonne de type CHAR: ``littéral'' (``unpacked'') signifie que le nombre est stocké sous forme de chaîne : chaque caractère représente un chiffre. La virgule décimale et le signe moins ‘-’ des nombres négatifs ne sont pas comptés dans M (mais de l'espace leur est réservé). Si D vaut 0, les valeurs n'auront pas de virgule décimale ou de partie décimale. L'intervale de validité du type DECIMAL est le même que DOUBLE, mais le vrai intervalle de validité de DECIMAL peut être restreint par le choix de la valeur de M et D. Si UNSIGNED est spécifié, les valeurs négatives sont interdites.
Si D est omis, la valeur par défaut est 0. Si M est omis, la valeur par défaut est 10.
Avant MySQL Version 3.23, l'argument M devait inclure l'espace nécessaire pour la virgule et le signe moins.
DEC[(M[,D])] [UNSIGNED] [ZEROFILL],[b] NUMERIC[(M[,D])][/b] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]
Ce sont des synonymes pour DECIMAL.
[/quote]
Le nombre est stocké comme une suite de chiffres en arrondissant les décimales au nombre indiqué.
Mysql dispose d'une arithmétique intégrée de ce type de nombres qui est surtout utilisé en compta pour obtenir ce qu'on appelle une précision absolue... Les algorithmes de calcul en sont particulièrement coriaces, mais bien connus...
Je viens de vérifier avec Mysql en ligne de commande : le nombre est stocké exactement sous la forme où il est entré; si le nombre de décimales dépasse D, il est arrondi; si la longueur de la saisie dépasse M, le nombre devient 99999.99...
Je n'ai pas testé ce que PHP faisait de ces valeurs...
Le décimal codé binaire fai(sai)t la même chose.