Je continue à voir des gens en utilisant un double en C#. Je sais j'ai lu quelque part que les doubles perdent parfois de précision. Ma question est de savoir quand doit-on utiliser un double et quand dois-je utiliser un type décimal? Le type est approprié pour de l'argent calculs? (ie. plus de 100 millions de dollars)
- Quand dois-je utiliser double au lieu de decimal ? (5 réponses )
Réponses
Trop de publicités?Pour de l'argent, toujours décimal. C'est pourquoi il a été créé.
Si les chiffres doivent correspondre correctement ou de l'équilibre, de l'utilisation de décimales. Cela inclut toutes les financiers de stockage ou des calculs, des notes, ou d'autres numéros que les gens peuvent faire à la main.
Si la valeur exacte du nombre n'est pas important, l'utilisation du double de la vitesse. Cela inclut les graphiques, de la physique ou d'autres sciences physiques calculs où il existe déjà un "nombre de chiffres significatifs".
Ma question est de savoir quand doit-on utiliser un double et quand dois-je utiliser une virgule type de?
decimal
pour lorsque vous travaillez avec des valeurs de l'ordre de 10^(+/-28) et où vous avez des attentes concernant le comportement fondé sur la base de 10 représentations fondamentalement de l'argent.
double
lorsque vous avez besoin d' une relative précision (c'est à dire perdre de la précision dans les chiffres de fin sur les grandes valeurs n'est pas un problème) à travers sauvagement différentes grandeurs -double
couvre plus de 10^(+/-300). Les calculs scientifiques en sont le meilleur exemple ici.le type est approprié pour de l'argent les calculs?
virgule, virgule, virgule
N'acceptez aucun compromis.
Le facteur le plus important est qu'
double
, à la mise en œuvre d'une fraction binaire, ne peut pas représenter avec précision nombredecimal
fractions (comme 0.1) à tous , et son nombre de chiffres est plus petit car il est en 64 bits vs 128 bits pourdecimal
. Enfin, les applications financières ont souvent de suivre des modes d'arrondi (parfois prescrits par la loi).decimal
prend en charge ces;double
ne le sont pas.
Système.Unique / float - 7 chiffres
Système.Double / double - 15-16 chiffres
Système.Décimal / décimal - 28-29 chiffres significatifs
La manière dont j'ai été piqué par l'utilisation du mauvais type de une bonne il ya quelques années est avec de grandes quantités:
- £520,532.52 - 7 chiffres
- £1,323,523.12 - 8 chiffres
Vous exécutez à 1 million de dollars pour un float.
15 chiffres de la valeur monétaire:
- £1,234,567,890,123.45
9 milliards avec un lit double. Mais avec de la division et des comparaisons, c'est plus compliqué (je ne suis certainement pas un expert en virgule flottante et les nombres irrationnels - voir Marc du point). Le mélange des décimales et des doubles provoque des problèmes:
Une opération mathématique ou de comparaison qui utilise un nombre à virgule flottante peut ne pas donner le même résultat si un nombre décimal est utilisé parce que le nombre à virgule flottante peut pas exactement approximative de la virgule numéro.
Quand dois-je utiliser double au lieu de la virgule? a quelques similaires et plus en profondeur des réponses.
À l'aide de double
au lieu de decimal
monétaire applications est un micro-optimisation - c'est le moyen le plus simple je la regarde.