把一个字符串转成double类型 要求:任意字符串,考虑非法情况,不用考虑double溢出情况,不调用系统库(pow/atoi等) 比如: 5325346346.53252352 gewtewt rwetw.42423 如果不合法返回-1 double string2double(const string& s) { double res = 0; if (s.size() == 0) { return 0; } int i = 0; while(s[i] == ' ') { ++i; } int sign = 1; if (s[i] == '-') { sign = -1; ++i; } else if (s[i] == "+") { ++i; } else if (!digit(s[i])) { return -1; } else { // do nothing } for (; i < s.size(); ++i) { if (!isgigit(s[i])) { break; } res = res*10 + (s[i]-'0'); } if (i < s.size()) { if (s[i] == '.') { ++i; } else { return -1; } } double val = 1; for (; i < s.size(); ++i) { if (!isgigit(s[i])) { return -1; } res = res*10 + (s[i]-'0'); val *= 10; } return sign * res / val; }
10-05
2205
08-22
6058
05-01
7万+
12-06
7133
08-11
1万+
07-27