繁体   English   中英

无法将字符串转换为int:'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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM