У меня есть это:
double myDecimal = static_cast<double>(atoi(arg_vec[1])); cout << myDecimal << endl;
Но почему, когда я передаю аргумент так:
./MyCode 0.003
Он печатает 0 вместо 0.003.
0
0.003
atoi() преобразуется в целое число. Вы хотите atof().
atoi()
atof()
Или вы можете использовать strtod ().
atoi () конвертирует в целое число, вы хотите atof (), которое конвертирует в двойное
Поскольку вы используете C ++, вы также можете использовать строковые потоки:
istringstream ss(arg_vec[1]); double d; ss >> d;
double d = boost::lexical_cast<double>("0.003");