Simple division [Résolu]

Signaler
Messages postés
502
Date d'inscription
dimanche 20 juillet 2008
Statut
Membre
Dernière intervention
14 mai 2016
-
Messages postés
16017
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 juin 2021
-
Bonjour,

J'ai 4 numericUpDown et j'aimerais diviser la somme de deux d'entre eux quand leur valeur change

numericUpDown3 et 4 sont entre eux.
numericUpDown5 et 6 sont entre eux.

Quand la valeur du numericUpDown3 change :

if (numericUpDown3.Value >= 0)
{

}
else
{
decimal cal = (numericUpDown3.Value / numericUpDown4.Value);
string result1 = cal.ToString("#.##");
label30.Text = result1;
}

Pour le 4 :

if (numericUpDown4.Value == 0)
{

}
else
{
decimal cal = (numericUpDown3.Value / numericUpDown4.Value);
string result = cal.ToString("#.##");
label29.Text = result;
}

Pour le 5 et 6 c'est le même code ( en modifiant les numéros des numericUpDown )

Quand je clique sur mon bouton pour avoir les numéro qui s'affichent, j'obtiens une erreur me disant que les divisions ne peuvent pas être faites avec le chiffre 0, pourtant j'ai mis " if (numericUpDown4.Value == 0)" je ne devrais pas avoir cette erreur non ?

1 réponse

Messages postés
16017
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 juin 2021
549
Bonsoir déjà tu devrais faire une seule méthode pour chaque couple de numericUpDown, ça évite les copier coller ratés et de devoir corriger deux fonctions quand il y a un bug. Tu écris la méthode pour l'un des deux et pour abonner le second à cette méthode fais comme sur cette capture


Par ce que là dans le 3 tu ne testes pas la valeur du 4 or 0/n est possible alors que n/0 ne l'est pas.

ensuite au lieu de

if (numericUpDown4.Value == 0)
            {
                //y'a rien ici!!
            }
            else
            {
                decimal cal = (numericUpDown3.Value / numericUpDown4.Value);
                string result = cal.ToString("#.##");
                label29.Text = result;
            }


if (numericUpDown4.Value != 0)
            {
                 decimal cal = (numericUpDown3.Value / numericUpDown4.Value);
                string result = cal.ToString("#.##");
                label29.Text = result;
            }



enfin tu peux réduire un peu le nombre de lignes, comme ça
if (numericUpDown4.Value != 0)
            {
                 decimal cal = (numericUpDown3.Value / numericUpDown4.Value);
                label29.Text = cal.ToString("#.##");
            }


voire vu que cal ne peut pas être utilisé ailleurs:
if (numericUpDown4.Value != 0)
                label29.Text = (numericUpDown3.Value / numericUpDown4.Value).ToString("#.##");