-
Decimal vs double
Bonjour,
Tout d'abord je m'excuse si une discussion de ce type existe déjà mais je ne l'ai pas trouvée alors qu'il me semble que c'est une question que tout utilisateur de SQL a du se poser un jour.
J'ai un champ qui est un nombre décimal à deux chiffres après la virgule et 3 avant maximum (compris donc entre -999,99 et 999,99). Ce champ est récupéré par un programme java qui va faire des calculs dessus.
Vaut-il mieux utiliser un double ou un decimal(3,2) pour ce champ ?
J'ai bien vu dans un cours que si on faisait des calculs sur un champ numérique le type double était préférable au type decimal. Mais je n'ai pas réussi à savoir si les calculs dont il était question étaient liés à une requète SQL ou fait en dehors de la base.
Naturellement je dirai que les calculs étant fait dans un programme étranger à la base, le type decimal est meilleur car il assure d'une manière optimisée les contraintes liées au champ et que lors du retour de requête dans le programme java il y aura un transtypage en Double.
Qu'en pensez-vous ?
-
Bonjour,
Pour commencer une petite précision : quel est votre SGBD ?
D'autre part, dans votre choix, c'est un decimal(5,2) et non un decimal(3,2), c'est-à-dire un nombre stocké sur 5 chiffres, avec deux chiffres après la virgule (d'où votre 999,99).
Quant à votre question : je dirais tout dépend du type des opérations que vous voudriez faire. Par exemple si votre nombre est un montant, et qu'il est multiplié par un taux, vous aurez besoin de beaucoup plus de chiffres après la virgule, quitte à arrondir lors d'un affichage.
Il faudrait que vous nous indiquez quel type d'opération vous voudriez faire.
-
Je ne connais bien le type double (sur quel SGBD d'ailleurs?). Mais si vous avez des manipulations à faire sur cette colonne, manipulations comptables par exemple, il faut utiliser le type décimal. Le type réel est une approximation, et il est facile d'arriver à la fin de l'année à des écarts qui ne s'expliquent que par le choix du mauvais type de données.
-
Au risque de paraître iconoclaste je n'utilise pas du tout ma base de données pour des raisons comptables.
En effet le type est bien decimal(5,2).
Les calculs que je fais sont des calculs scientifiques (lignes trigonométriques par exemple). Mais ces calculs se font une fois que l'on a récupéré les données de la base.
Le SGBD utilisé est H2.
Double est un type numérique réel de grande précision.