Pergunta

eu tenho este:

double myDecimal = static_cast<double>(atoi(arg_vec[1]));
cout << myDecimal << endl;

Mas por que quando eu passar o argumento como este:

./MyCode 0.003   

Ela imprime 0 vez de 0.003.

Foi útil?

Solução

atoi() convertidos para inteiro. Você quer atof() .

Ou você pode usar strtod ().

Outras dicas

atoi (convertidos a um inteiro), você quer atof (), que se converte em um duplo

Uma vez que você estiver usando C ++, você também pode usar stringstreams:

istringstream ss(arg_vec[1]);
double d;
ss >> d;
double d = boost::lexical_cast<double>("0.003");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top