31 votes

Quelle est la meilleure façon de comparer Double et Int ?

Le code suivant en C# ne fonctionne pas :

int iValue = 0;
double dValue = 0.0;

bool isEqual = iValue.Equals(dValue);

La question est donc la suivante : quelle est la meilleure façon de comparer Double et Int ?

0voto

Milan Vylita Points 1

De https://docs.microsoft.com/en-us/dotnet/api/system.double.equals?view=netframework-4.8#System_Double_Equals_System_Double_

Parce que Epsilon définit l'expression minimale d'une valeur positive dont l'étendue est proche de zéro, la marge de différence entre deux valeurs similaires valeurs similaires doit être supérieure à Epsilon. Généralement, elle est plusieurs fois supérieure à Epsilon. Pour cette raison, nous vous recommandons de ne pas d'utiliser Epsilon lorsque vous comparez des valeurs doubles pour l'égalité.

0voto

65333141 Points 1

Si vous n'avez pas effectué de calculs à l'aide du double, vous pouvez simplement utiliser == . C'est parce qu'un nombre entier peut être représenté par un double exactement (seulement entre -2^53 et 2^53).

int iValue = 0;
double dValue = 0.0;

bool isEqual = iValue == dValue;

Cela renvoie à vrai.

La raison pour laquelle Equals ne fonctionne pas, c'est que le == convertira automatiquement l'entier en double avant la comparaison, tandis que l'opérateur Equals ne le fera pas et échouera donc.

Cette réponse contient plus d'informations : https://stackoverflow.com/a/52525223/15714398

Si vous avez effectué des calculs en utilisant le double, les jeux sont faits et vous devez faire une analyse du nombre de chiffres significatifs dans vos calculs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X