J'ai observé un problème étrange (pour moi) en C# (.Net 4.6.1) avec des variables à virgule flottante.double erreur d'arrondi sans calcul
J'ai un propre classe simple Point:
public class Point
{
public readonly double X;
public readonly double Y;
public Point(double x, double y)
{
this.X = x;
this.Y = y;
}
//...
}
Et une classe Rectangle par Contient méthode. Parfois - très difficile à reproduire - quand je passe un objet Point à la méthode Contains d'un objet Rectangle, les valeurs de X ou Y ne sont pas les mêmes. Il n'y a pas de calcul entre ou tout autre changement de la variable. Juste obtenir la valeur de la variable. Dans la méthode d'appel, la valeur est OK et dans la méthode appelée, la valeur a une erreur d'arrondi.
Quel est le problème ici? Pourquoi y a-t-il une autre valeur dans la méthode appelée?
A la fin, la valeur ne change pas. Donc, dans la méthode de l'appelant, la valeur est encore OK plus tard.
Merci d'avance!
Maas
Cela semble être une différence d'affichage dans le débogueur. Je soupçonne que si vous essayez de trouver la valeur * exact *, vous le verrez rester le même. (Que se passe-t-il si vous développez 'intersectionPoint' par exemple? Ou montre' intersectionPoint.Y.ToString ("r") '?) –
Ouais, mon erreur. Je n'ai pas développé "intersectionPoint". * honte * :) Je pensais que la méthode ToString affiche la valeur complète. ToString -> return $ "{this.X}; {this.Y}"; – Maas