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 .

Était-ce utile?

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
scroll top