Bonjour,
si je fais un :
C'est 3 qui s'affiche et non pas 3.3333333...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Response.Write(10/3);
Pourquoi ? Qu'ai-je omis ?![]()
Bonjour,
si je fais un :
C'est 3 qui s'affiche et non pas 3.3333333...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Response.Write(10/3);
Pourquoi ? Qu'ai-je omis ?![]()
10 et 3 sont de entiers donc ton résultat est un entier.
Pour des calculs précis, travaille avec des Float
Pour avoir 2 décimals après la virgule, tu peux faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 float x; x = (float)10 / 3; Response.Write(x.ToString(".##")); // pour avoir 2 chifres après la virgule Response.Write(x.ToString(".####")); // pour avoir 4 chifres après la virgule
Oui, j'ai vu mon erreur.
Mais j'ai un problème, j'utilise la compilation dynamique, c'est à dire que j'ai un string "10/3" par exemple que je donne en argument à une fonction qui l'évalue.
Comment sans toucher à la formule puis-je demander un floattant ?
si j'ai "8+(10/3)+((8+1)/86)" sans avoir à mettre des . dans la formule.
// Pas bien...
float x;
x = (float)10 / 3;
// Bien...
float x = 10F / 3F;
Pourquoi c'est pas bien ?Envoyé par neptune
![]()
Car tu créé un objet de type Int et ensuite tu le cast en float. Autant le créer directement dans le bon type, non?
ok, je vois. Merci pour la remarque
On dirait pas vu que le resultat est correct. Si un int etait passé au milieu, on aurait un resultat du genre 3.000. Le runtime doit detecter le cast, et casté preventivement les deux int en floats.
Pour l'op : si tu compiles directement une chaine, il va falloir la parser. De toutes facons, il le faut si ton utilisateur colle une division par 0 entiere au milieu, sans quoi tu vas te prendre une belle exception (ou meme un NaN). AMHA, compiler directement du code entré par l'utilisateur enfreint la regle n°1 ("don't trust user input") et c'est pas bien. Coder un petit parser simple s'impose (en plus ca t'évitera d'émettre un assembly à l'exécution, ce qui est sacrement consommateur), et si tu te limites aux operations simples, ca ne devrait pas etre bien compliqué.
Ouais, mais si t'as deux variables int que tu divises, tu peux pas faire genredonc le cast est obligatoire dans la plupart des cas !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int x = 10, y = 3; int res = xF / yF;
Tober: bien-sûr, mais dans la demane initiale il était question de litéraux et non de variables...
C'est pas faux
Mais secretement, j'ai cru que tu trouverais une solution a l'absurdite que j'avais mise![]()
Partager