![](/img/trans.png)
[英]Convert string array to int array 'System.FormatException'
[英]Can't convert string to int: 'System.FormatException'
我在将字符串转换为整数时遇到问题,我的程序在此行失败
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();
你是在自问自答。 一个int最多只能存储2147483648,而一个无符号的int最多可以存储4294967296。请尝试使用ulong。 我对此不太确定,但也许签了字可能会奏效。
编辑:实际上,在msdn页面中它说:
如果由整数文字表示的值超出ulong的范围,则会发生编译错误。
因此,可能您需要加倍。
Math.Pow(2,1000)返回-2147483648 。
因此,您最终将在列表中找到11个项目,第一个为“-”。
您不能将减号转换为int。
在所有语言的所有类型中,可以保存的数字都有限制。 c#的int是-2,147,483,648至2,147,483,647。 https://msdn.microsoft.com/zh-CN/library/5kzh1b5w.aspx
Math.Pow返回一个double值,当您要将其强制转换为int时,变量的值为0
Math.Pow(2,1000)返回:1.07150860718627E + 301。
如果您使用double格式,则将尝试投射。 和E和+,它们不是int,则不能使用int来保存它。
返回在此处回答的FormatException: int.Parse,输入字符串的格式不正确
也许您可以尝试以下方法:
国际新闻;
如果(!int.TryParse(Textbox1.Text,out newS))newS = 0;
结果+ = newS;
但不会使用2 ^ 1000解决方案的301位数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.