很多人都寫過這個標題的文章,但本文要解決的是確保負數的string和double也可以進行轉換。
代碼如下:
string轉double
1 double stringToDouble(string num) 2 { 3 bool minus = false; //標記是否是負數 4 string real = num; //real表示num的絕對值 5 if (num.at(0) == '-') 6 { 7 minus = true; 8 real = num.substr(1, num.size()-1); 9 } 10 11 char c; 12 int i = 0; 13 double result = 0.0 , dec = 10.0; 14 bool isDec = false; //標記是否有小數 15 unsigned long size = real.size(); 16 while(i < size) 17 { 18 c = real.at(i); 19 if (c == '.') 20 {//包含小數 21 isDec = true; 22 i++; 23 continue; 24 } 25 if (!isDec) 26 { 27 result = result*10 + c - '0'; 28 } 29 else 30 {//識別小數點之后都進入這個分支 31 result = result + (c - '0')/dec; 32 dec *= 10; 33 } 34 i++; 35 } 36 37 if (minus == true) { 38 result = -result; 39 } 40 41 return result; 42 }
double轉string
string doubleToString(double num) { char str[256]; sprintf(str, "%lf", num); string result = str; return result; }
歡迎轉載和指點,轉載請注明出處
by 一棵球