Pb de concersion double -> int
pom
-
pom -
pom -
Bonjour, j'ai un pb sur ma conversion d'un double en entier (j'avoue que j'ai un peu honte de cette question mais je ne trouve pas mon erreur sur mon prgm de 10 lignes...)
Voici mon code
#include<iostream>
using namespace std;
typedef unsigned long ulong;
int main()
{
const double tfin=4e-2;
const double dt=1e-5;
const ulong nb_iter=(ulong) (tfin/dt+1);
const double nb_iter2=tfin/dt+1.;
cout<<"nb_iter = "<<nb_iter<<endl;
cout<<"nb_iter2 = "<<nb_iter2<<endl;
cout<<4e-2/1e-5+1<<endl;
return 0;
}
Voici la réponse a la fin de l'exécution du prgm :
nb_iter = 4000
nb_iter2 = 4001
4001
Maintenant, si je fais dt=1e-2, 1e-3, 1e-4, 1e-6, 1e-7 j'ai bien nb_iter==nb_iter2==le calcul de la dernière ligne, mais pour dt=1e-5 et 1e-8 je n'ai plus les mêmes résultats !!
Pouvez-vous m'expliquer l'erreur s'il vous plait ?
(j'ai besoin de nb_iter car je veux faire un vector de longueur nb_iter (qui est un entier))
merci par avance (et excusez-moi de cette question sûrement très simple)
Voici mon code
#include<iostream>
using namespace std;
typedef unsigned long ulong;
int main()
{
const double tfin=4e-2;
const double dt=1e-5;
const ulong nb_iter=(ulong) (tfin/dt+1);
const double nb_iter2=tfin/dt+1.;
cout<<"nb_iter = "<<nb_iter<<endl;
cout<<"nb_iter2 = "<<nb_iter2<<endl;
cout<<4e-2/1e-5+1<<endl;
return 0;
}
Voici la réponse a la fin de l'exécution du prgm :
nb_iter = 4000
nb_iter2 = 4001
4001
Maintenant, si je fais dt=1e-2, 1e-3, 1e-4, 1e-6, 1e-7 j'ai bien nb_iter==nb_iter2==le calcul de la dernière ligne, mais pour dt=1e-5 et 1e-8 je n'ai plus les mêmes résultats !!
Pouvez-vous m'expliquer l'erreur s'il vous plait ?
(j'ai besoin de nb_iter car je veux faire un vector de longueur nb_iter (qui est un entier))
merci par avance (et excusez-moi de cette question sûrement très simple)
A voir également:
- Pb de concersion double -> int
- Double ecran - Guide
- Whatsapp double sim - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
- Double boot - Guide