Comment passer la valeur décimale comme argument correctement
-
10-07-2019 - |
Question
J'ai ceci:
double myDecimal = static_cast<double>(atoi(arg_vec[1]));
cout << myDecimal << endl;
Mais pourquoi quand je passe l'argument comme ceci:
./MyCode 0.003
Il imprime 0
au lieu de 0.003
.
La solution
atoi ()
est converti en entier. Vous voulez atof ()
.
Vous pouvez également utiliser strtod ().
Autres conseils
atoi () convertit en entier, vous voulez atof (), qui convertit en double
Puisque vous utilisez C ++, vous pouvez également utiliser des chaînes de caractères:
istringstream ss(arg_vec[1]);
double d;
ss >> d;
double d = boost::lexical_cast<double>("0.003");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow