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 <iostream>
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