Frage

Ich habe diese:

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

Aber warum, wenn ich übergeben das Argument wie folgt aus:

./MyCode 0.003   

Er druckt 0 statt 0.003.

War es hilfreich?

Lösung

atoi() wandelt auf ganzzahlige. Sie wollen atof() .

Oder könnten Sie strtod ().

Andere Tipps

atoi () konvertiert in eine ganze Zahl, möchten Sie atof (), die zu einem Doppel wandelt

Da Sie C ++ verwenden, können Sie auch stringstreams verwenden:

istringstream ss(arg_vec[1]);
double d;
ss >> d;
double d = boost::lexical_cast<double>("0.003");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top