我在将字符串转换为整数时遇到问题,我的程序在此行上失败
int newS = int.Parse(s);
留言:
mscorlib.dll中发生未处理的“System.FormatException”类型异常
我期待从我的计划中回来的数字相当大。以下是总计划:
int math = (int)Math.Pow(2,1000);
string mathString = math.ToString();
List<string> list = new List<string>();
char[] ch = mathString.ToCharArray();
int result = 0;
foreach (char c in mathString)
{
string newC = c.ToString();
list.Add(newC);
//Console.WriteLine(newC);
}
foreach (string s in list)
{
int newS = int.Parse(s);
result += newS;
}
Console.Write(result);
Console.ReadLine();
答案 0 :(得分:0)
你回答了自己的问题。 int只能存储最大为2147483648的数字和一个最多为4294967296的无符号int。尝试使用ulong。我不确定这一点,但也许签名的长期可能有用。
编辑:实际上,在msdn页面中它说:
如果整数文字表示的值超出ulong的范围,则会发生编译错误。
所以你可能需要一双。
答案 1 :(得分:0)
Math.Pow(2,1000)返回 -2147483648 。
因此,您最终会在列表中找到11个项目,第一个项目为“ - ”。
您无法将减号转换为int。
答案 2 :(得分:0)
在所有类型的所有语言中都限制了可以保存的数字。 c#的int是-2,147,483,648到2,147,483,647。 https://msdn.microsoft.com/en-us/library/5kzh1b5w.aspx
Math.Pow 返回一个double,当你想将它强制转换为int时,你的变量得到值0
Math.Pow(2,1000)返回:1.07150860718627E + 301。
如果你使用双重格式,你会尝试施放。和E和+,这不是一个int然后你不能使用int来保存它。
返回此处回答的FormatException: int.Parse, Input string was not in a correct format
也许你可以试试这个:
int newS;
if(!int.TryParse(Textbox1.Text,out newS))newS = 0;
结果+ = newS;
但不会使用2 ^ 1000解决方案的301位数。