Différence entre décimal, float et double dans .NET?



Answers

La précision est la principale différence.

Float - 7 chiffres (32 bits)

Double -15-16 chiffres (64 bits)

Decimal -28-29 chiffres significatifs (128 bits)

Les nombres décimaux ont une précision beaucoup plus élevée et sont généralement utilisés dans des applications financières nécessitant un haut degré de précision. Les nombres décimaux sont beaucoup plus lents (jusqu'à 20 fois dans certains tests) qu'un double / flotteur.

Les nombres décimaux et les nombres flottants / doubles ne peuvent pas être comparés sans le lancer alors que les nombres flottants et doubles le peuvent. Les nombres décimaux autorisent également les zéros de codage ou de fin.

float flt = 1F/3;
double dbl = 1D/3;
decimal dcm = 1M/3;
Console.WriteLine("float: {0} double: {1} decimal: {2}", flt, dbl, dcm);

Résultat :

float: 0.3333333  
double: 0.333333333333333  
decimal: 0.3333333333333333333333333333
Question

Quelle est la différence entre decimal , float et double dans .NET?

Quand est-ce que quelqu'un en utiliserait un?




Les types de variable Decimal, Double et Float sont différents dans la façon dont ils stockent les valeurs. La précision est la principale différence lorsque float est un type de données à virgule flottante simple précision (32 bits), double est un type de données à virgule flottante double précision (64 bits) et décimal est un type de données à virgule flottante de 128 bits.

Flotteur - 32 bits (7 chiffres)

Double - 64 bits (15-16 chiffres)

Décimal - 128 bits (28 à 29 chiffres significatifs)

Plus sur ... la différence entre Decimal, Float et Double







Les nombres entiers, comme cela a été mentionné, sont des nombres entiers. Ils ne peuvent pas stocker le point quelque chose, comme .7, .42 et .007. Si vous devez stocker des nombres qui ne sont pas des nombres entiers, vous avez besoin d'un type de variable différent. Vous pouvez utiliser le type double ou le type float. Vous définissez ces types de variables exactement de la même manière: au lieu d'utiliser le mot int , vous tapez double ou float . Comme ça:

float myFloat;
double myDouble;

( float est l'abréviation de "floating point", et signifie simplement un nombre avec un point quelque chose à la fin.)

La différence entre les deux est dans la taille des nombres qu'ils peuvent contenir. Pour float , vous pouvez avoir jusqu'à 7 chiffres dans votre numéro. Pour les double , vous pouvez avoir jusqu'à 16 chiffres. Pour être plus précis, voici la taille officielle:

float:  1.5 × 10^-45  to 3.4 × 10^38  
double: 5.0 × 10^-324 to 1.7 × 10^308

float est un nombre de 32 bits et double est un nombre de 64 bits.

Double-cliquez sur votre nouveau bouton pour obtenir le code. Ajoutez les trois lignes suivantes à votre code de bouton:

double myDouble;
myDouble = 0.007;
MessageBox.Show(myDouble.ToString());

Arrêtez votre programme et revenez à la fenêtre de codage. Changez cette ligne:

myDouble = 0.007;
myDouble = 12345678.1234567;

Exécutez votre programme et cliquez sur votre double bouton. La boîte de message affiche correctement le numéro. Ajouter un autre nombre à la fin, cependant, et C # sera à nouveau arrondi vers le haut ou vers le bas. La morale est que si vous voulez de l'exactitude, faites attention aux arrondis!




Flotter ~ ± 1,5 x 10-45 à ± 3,4 x 1038 -------- 7 chiffres
double ~ ± 5,0 x 10-324 à ± 1,7 x 10308 ------ 15 ou 16 chiffres
décimal ~ ± 1,0 x 10-28 à ± 7,9 x 1028 -------- 28 ou 29 chiffres




Personne n'a mentionné cela

Dans les paramètres par défaut, Floats (System.Single) et doubles (System.Double) n'utiliseront jamais la vérification de dépassement de capacité alors que Decimal (System.Decimal) utilisera toujours la vérification de dépassement de capacité.

je veux dire

decimal myNumber = decimal.MaxValue;
myNumber += 1;

throws OverflowException .

Mais ceux-ci ne le font pas:

float myNumber = float.MaxValue;
myNumber += 1;

&

double myNumber = double.MaxValue;
myNumber += 1;



Les types de variable Decimal, Double et Float sont différents dans la façon dont ils stockent les valeurs. La précision est la principale différence lorsque float est un type de données à virgule flottante simple précision (32 bits), double est un type de données à virgule flottante double précision (64 bits) et décimal est un type de données à virgule flottante de 128 bits.

Flotteur - 32 bits (7 chiffres)

Double - 64 bits (15-16 chiffres)

Décimal - 128 bits (28 à 29 chiffres significatifs)

La principale différence est que Floats et Doubles sont des types à virgule flottante binaire et un Decimal stocke la valeur sous forme de virgule décimale flottante. Les décimales ont donc une précision beaucoup plus grande et sont généralement utilisées dans des applications de calcul monétaires (financières) ou scientifiques nécessitant un haut degré de précision. Mais en termes de performances, les nombres décimaux sont plus lents que les types double et flottant.

Décimal peut 100% représenter avec précision n'importe quel nombre dans la précision du format décimal, tandis que Float et Double, ne peut pas représenter avec précision tous les nombres, même les chiffres qui sont dans leurs formats respectifs de précision.

Décimal

Dans le cas d'applications financières, ou de calculs scientifiques, il est préférable d'utiliser les types décimaux car cela vous donne un haut niveau de précision et évite facilement les erreurs d'arrondi

Double

Les types doubles sont probablement le type de données le plus couramment utilisé pour les valeurs réelles, à l'exception du traitement de l'argent.

Flotte

Il est principalement utilisé dans les bibliothèques graphiques car les demandes de puissances de traitement sont très élevées et les situations d'utilisation peuvent supporter des erreurs d'arrondi.




La principale différence entre chacun d'eux est la précision.

float est un nombre de 32-bit , double est un nombre de 64-bit et decimal est un nombre de 128-bit .




Links