Как правильно передать десятичное значение в качестве аргумента

StackOverflow https://stackoverflow.com/questions/637196

  •  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");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top