IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

comment faire une soustraction en c#.. ?


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut comment faire une soustraction en c#.. ?
    Bonjour,
    Je ne comprends pas le résultat du simple calcul suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    double? OriginalFactor = null;
    double CalculatedFactor = 0;
    double? Adjustment = null;
    Calculate(out double? OriginalFactor, out Adjustment, out CalculatedFactor);
    ...
    private void CalculateFactor(out double OriginalFactor, out double? Adjustment, out double CalculatedFactor) {
    	Adjustment = null;
    	OriginalFactor = null;
    	CalculatedFactor = 0;
    	if(true) {
    		OriginalFactor = 1.2;
    		Adjustment = -0.1;
    	}
    CalculatedFactor = (OriginalFactor.HasValue ? OriginalFactor.Value : 0) + (Adjustment.HasValue ? Adjustment.Value : 0)
    }
    En effet je me retrouve avec CalculatedFactor qui vaut 1.0999999999999999 au lieu de 1.1. Et ce n'est pas juste un visuel car le booléen (CalculatedFactor == 1.1) vaut false

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    C'est tout le problème avec les réels représentés en virgule flottante : les approximations.

    Cette problématique est bien rappelée dans la page d'aide de Double de Microsoft :
    https://msdn.microsoft.com/fr-fr/lib...em.double.aspx
    Regarde en particulier le paragraphe sur "Test de l'égalité".

    Si tu veux une garantie d'une meilleure précision, utilises plutôt le type "decimal".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire une interface de ce type....
    Par SpiderAlpha dans le forum C++Builder
    Réponses: 6
    Dernier message: 30/04/2007, 13h50
  2. [NetBeans] Comment faire une applet ???
    Par goldbar dans le forum NetBeans
    Réponses: 3
    Dernier message: 30/05/2004, 13h52
  3. Réponses: 2
    Dernier message: 03/05/2004, 12h13
  4. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  5. Réponses: 10
    Dernier message: 10/10/2003, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo