Le type de données 'MONEY' de SQL Server est-il un virgule flottante décimale ou un point flottant binaire?
Je ne pouvais pas trouver quelque chose qui rejette ou confirme si SQL Server "ARGENT" type de données est un nombre décimal à virgule flottante ou à virgule flottante binaire.
Dans la description il est dit que l'ARGENT de type de -2^63 à 2^63 - 1 si ce genre de implique qu'il doit être un binaire à virgule flottante.
Mais sur cette page il des listes d'ARGENT comme "exacte" numérique. Le type qui suggère que l'ARGENT peut être un nombre décimal à virgule flottante (sinon, comment est-il exact? ou quelle est la définition exacte?)
Alors si l'ARGENT est un nombre décimal à virgule flottante, alors quelle est la différence entre l'ARGENT et la VIRGULE(19,4) ?
source d'informationauteur kaptan
Vous devez vous connecter pour publier un commentaire.
Ni. Si il s'agissait d'une mise en œuvre de la virgule flottante, il sera soumis à la même inexactitudes que le FLOTTEUR et le type REAL. Voir Virgule Flottante sur wikipédia.
De l'ARGENT est un point fixe type.
C'est un octet de plus petit qu'un DÉCIMAL(19,4), parce qu'il a une plus petite gamme (922,337,203,685,477.5808 à 922,337,203,685,477.5807), par opposition à (-10^15+1 à 10^15-1).
Pour voir les différences, nous pouvons regarder la documentation:
Documentation pour de l'argent:
L'argent et smallmoney types de données sont exactes d'un dix-millième de l'unité monétaire qu'ils représentent.
Comparer à décimal:
Lorsque le maximum de précision est utilisé, les valeurs valides sont comprises entre -10^38 + 1 par 10^38 - 1.
Donc ils ne sont pas exactement équivalents, tout semblable. Une VIRGULE(19,4) est légèrement plus importante que l'ARGENT (il peut y en magasin à partir de -10^15 + 0,0001 à 10^15 - 0.0001), mais a aussi besoin d'un octet de plus de stockage.
En d'autres termes, cela fonctionne:
Mais ce n'est pas le cas:
Il y a aussi une différence sémantique. Si vous souhaitez stocker des valeurs monétaires, il est logique d'utiliser le type de l'argent.
Je pense que la principale différence sera l'espace de stockage requis.
DECIMAL(19,4)
exigera 9 octets de stockageMONEY
exigera 8 octets de stockage