type de données NUMERIC

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : type de données NUMERIC

Re: type de données NUMERIC

par jilie » 12 oct. 2011, 12:12

Je comprend mieux également pourquoi on conseil de travailler les prix avec le type DECIMAL OU NUMERIC

merci

Re: type de données NUMERIC

par xTG » 12 oct. 2011, 11:23

La même page dans sa version anglaise n'indique donc pas la même chose, mais pour ma part je me fierai davantage à la version anglaise. ;)
As of MySQL 5.0.3, DECIMAL values are stored in binary format. Previously, they were stored as strings, with one character used for each digit of the value, the decimal point (if the scale is greater than 0), and the “-” sign (for negative numbers).

Re: type de données NUMERIC

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.

Re: type de données NUMERIC

par xTG » 12 oct. 2011, 09:29

Je ne sais pas où tu as lu ceci mais surement pas dans la documentation. ^^
Ce type est stocké comme le type DECIMAL, à savoir en binaire.
Mais c'est totalement transparent pour toi, tu l'utilises comme tu utiliserais une donnée au format INT.

Re: type de données NUMERIC

par jilie » 11 oct. 2011, 20:36

Le problemme c'est que c'est stocké sous forme de chaine de caractères (d'aprés se que j'ai lue) alors je me demande
comment on peux faire des calcules sur une chaine de caractères

merci

Re: type de données NUMERIC

par xTG » 11 oct. 2011, 18:38

De la même façon qu'avec un type flottant ou bien entier.
Qu'est ce qui te bloque ?

type de données NUMERIC

par jilie » 11 oct. 2011, 18:32

Bonjours,

commen fait-on pour calculer des prix avec le type de données NUMERIC dans mysql
exemple NUMERIC(5,2)

merci