Probleme cast...

darmoor Messages postés 38 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 2 novembre 2005 - 8 juin 2005 à 20:49
darmoor Messages postés 38 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 2 novembre 2005 - 8 juin 2005 à 23:05
Salut!



En entrée, j'ai une valeur de type double.

et en sortie je doit avoir la même valeur mais arrondie au centième inferieur.



Ca marche bien pratiquement avec toute les valeurs sauf
certaines, j'ai trouvé dans le cas ou je tape 12.12 et il me sort 12.11
alors qu'il devrait sortir 12.12



la source:



#include



using namespace std;



int main(void)

{

double valeur, valeur_change,valeur_final;

cin >> valeur; //cas de 12.12 avec des essais



valeur_change = 100*(valeur - (int)valeur); // donc on obtient 0,12*100 soit 12

valeur_final = (int)valeur_change; // et la on a la
valeur entiere de 12 qui devrai etre 12 mais dans ce cas elle retourne
11....

valeur_final /= 100; // apres je divise pas 100

valeur_final += (int)valeur; //puis je l'ajoute a la valeur entier de 12.12 dans notre cas

cout << valeur_final; // et j'affiche.

system("PAUSE");



return 0;

}





donc l'erreur est donc avec valeur_final = (int)valeur_change;

or j'ai testé avec 14.14 et plein d'autre valeur surtout dans le cas de plus de 2 chiffres après la virgule et ca marchait



alors si vous avez une solution?



Merci

Darmoor

2 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
8 juin 2005 à 21:38
Parce que les float ne sont pas codés de manière exacte, en fait en
machine tu as 12.11999999, mais quand tu l'affiche c'est arrondi donc
ca donne 12.12

Si c'est l'utilisateur qui saisit le nombre, le plus simple est de
saisir une chaine ("12.12"), et la ca sera plus facile à manipuler
0
darmoor Messages postés 38 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 2 novembre 2005
8 juin 2005 à 23:05
c'est à dire?

car je vois le concept presque, mais bon, celon ce que je vois je suis
partis pour ecrire beaucoup par rapport a mon code de depart..

une petite aide plz
0
Rejoignez-nous