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