Nous utilisons double
.
*haleter*
Pourquoi?
Parce qu'il peut représenter n'importe quel nombre à 15 chiffres sans aucune contrainte sur l'emplacement du point décimal . Le tout pour un maigre 8 octets!
Il peut donc représenter:
0.123456789012345
123456789012345.0
... et quoi que ce soit entre les deux.
Ceci est utile car nous avons affaire à des devises mondiales et double
peut stocker les différents nombres de décimales que nous rencontrerons probablement.
Un seul double
champ peut représenter 999 999 999 999 999 s en yens japonais, 9 999 999 999 999,99 s en dollars américains et même 9 999 999 99999 99999 s en bitcoins
Si vous essayez de faire de même avec decimal
, vous avez besoin de decimal(30, 15)
ce qui coûte 14 octets.
Avertissements
Bien sûr, l'utilisation double
n'est pas sans réserves.
Cependant, ce n'est pas une perte de précision comme certains ont tendance à le souligner. Même si double
lui-même peut ne pas être exact en interne pour le système de base 10 , nous pouvons le rendre exact en arrondissant la valeur que nous tirons de la base de données à ses décimales significatives. Si besoin est. (Par exemple, s'il doit être sorti et qu'une représentation en base 10 est requise.)
Les mises en garde sont, chaque fois que nous effectuons de l'arithmétique avec lui, nous devons normaliser le résultat (en l'arrondissant à ses décimales significatives) avant:
- Effectuer des comparaisons dessus.
- Le réécrire dans la base de données.
Un autre type de mise en garde est, contrairement à l' decimal(m, d)
endroit où la base de données empêchera les programmes d'insérer un nombre de plus de m
chiffres, aucune validation de ce type n'existe avec double
. Un programme peut insérer une valeur entrée par l'utilisateur de 20 chiffres et il finira par être enregistré en silence comme un montant inexact.
deimal(10,2)
est ce que j'utilise ... vous pouvez ajuster les valeurs en fonction de la taille attendue