【发布时间】:2020-02-16 04:25:10
【问题描述】:
int stringToInt(string str)
{
if (str.length() == 1){
return (str[0] - '0');
}
double y = stringToInt(str.substr(1));
double x = str[0] - '0';
x = x * pow(10, str.length() - 1) + y;
return int(x);
}
int main(){
string s1= "12345";
string s2= "123456789101";
cout<<"s1"<<stringToInt(s1)<<endl;
cout<<"s2"<<stringToInt(s2)<<endl;
}
s1= 12345 的正确输出。
但是对于 s2="123456789101",它给出了错误的输出。(负数!!!)
谁能告诉我出了什么问题?
如何使用递归函数将长字符串转换为整数?
【问题讨论】:
-
谢谢,如何将长字符串正确转换为整数?
-
你不能。此数字太大,无法放入 32 位整数。您需要使用 64 位整数。
-
同样使用 double 可能会导致您遇到大数字问题。有 64 位整数,double 精度不够。