"5" et "2" étant des entiers, c'est une division entière qui est réalisée.
Il suffirait de remplacer l'une des opérandes par "5.0" ou "2.0".
"5" et "2" étant des entiers, c'est une division entière qui est réalisée.
Il suffirait de remplacer l'une des opérandes par "5.0" ou "2.0".
En effet cela fonctionne bien mais comment faire en sorte que "l'opération" entrée par l'utilisateur calcule avec des double directement ?
Car l'utilisateur ne va encoder que 5/2 et ne mettra jamais la valeur décimale nulle... :/
Je pourrais essayer de parser l'opération et ajouter les décimales manquantes mais est ce la bonne solution ?
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Oui je sais bien Bluedeep mais le code convient tout à fait à ce que je recherches, je n'ai pas besoin de gérer plus de méthode de la classe statique Math
Tiens, un parseur rapide qui devrait régler tes problèmes d'arrondi (torché en 5mn, testé mais pas à fond) :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 private static string parseToEnforceDouble(string formula) { int pos = -1; bool lastIsDigit = false; // positionnement au premier nombre while (char.IsDigit(formula[++pos]) == false) ; formula += ' '; // sale !! while (pos < formula.Length) { char c = formula[pos]; if (char.IsDigit(c)) { lastIsDigit = true; pos++; } else { if (lastIsDigit) { if (c != '.' && c != 'd') { formula = formula.Insert(pos, "d"); pos++; } lastIsDigit = false; } pos++; } } return formula.Trim(); }
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Voici la méthode que j'ai utilisé :
Tout en m'assurant que les , éventuelles soit transformées en . lors de l'encodage via l'évènement KeyPress.
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
16
17
18
19
20
21
22
23
24 private String FormatOperation(string operation) { StringBuilder sb = new StringBuilder(); char[] oper = operation.ToCharArray(); Boolean PreviousIsDigit = false; for (int i = 0; i < oper.Length; i++) { if (char.IsDigit(oper[i])) { sb.Append(oper[i]); PreviousIsDigit = true; } else { if(PreviousIsDigit && oper[i] !='.') sb.Append('d'); sb.Append(oper[i]); PreviousIsDigit = false; } } return sb.ToString(); }
Je passes le sujet en résolu, merci à tous pour vos réactions et commentaires
Sinon il y a une autre technique qui utilise le eval de JScript, que j'avais déjà décrite ici
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager