Как правильно передать десятичное значение в качестве аргумента - PullRequest
1 голос
/ 12 марта 2009

У меня есть это:

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

Но почему, когда я передаю аргумент так:

./MyCode 0.003   

Он печатает 0 вместо 0.003.

Ответы [ 4 ]

7 голосов
/ 12 марта 2009

atoi() преобразуется в целое число. Вы хотите atof().

Или вы можете использовать strtod ().

3 голосов
/ 12 марта 2009

atoi () конвертирует в целое число, вы хотите atof (), которое конвертирует в двойное

2 голосов
/ 12 марта 2009

Поскольку вы используете C ++, вы также можете использовать строковые потоки:

istringstream ss(arg_vec[1]);
double d;
ss >> d;
1 голос
/ 12 марта 2009
double d = boost::lexical_cast<double>("0.003");
...