Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t将字符串转换为int:';System.FormatException';_C# - Fatal编程技术网

C# Can';t将字符串转换为int:';System.FormatException';

C# Can';t将字符串转换为int:';System.FormatException';,c#,C#,我无法将字符串转换为整数,我的程序在这一行失败 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>

我无法将字符串转换为整数,我的程序在这一行失败

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();
intmath=(int)math.Pow(21000);
字符串mathString=math.ToString();
列表=新列表();
char[]ch=mathString.ToCharArray();
int结果=0;
foreach(mathString中的字符c)
{
字符串newC=c.ToString();
列表。添加(newC);
//控制台写入线(newC);
}
foreach(列表中的字符串s)
{
int newS=int.Parse;
结果+=新闻;
}
控制台。写入(结果);
Console.ReadLine();

您回答了自己的问题。整数最多只能存储2147483648个数字,无符号整数最多只能存储4294967296个数字。试着用乌龙代替。我不确定这个,但也许签了一份长合同就行了

编辑:实际上,在msdn页面中,它说:

如果整型文字表示的值超过ulong的范围,则会发生编译错误

因此,您可能需要一个double。

Math.Pow(2100)返回-2147483648

因此,列表中有11项,第一项是“-”


您无法将减号转换为整数。

在所有语言的所有类型中,您可以保存的数字都有限制。 c#的整数是-2147483648到2147483647。

数学,战俘 返回一个double,当您要将其强制转换为int时,您的变量将获得值0

数学Pow(21000)返回值:1.07150860718627E+301

如果您使用双重格式,您将尝试强制转换。E和+,它们不是int,那么你不能用int来保存它

返回此处回答的FormatException:

也许你可以试试这个:

国际新闻

如果(!int.TryParse(Textbox1.Text,out newS))newS=0

结果+=新闻


但不会使用2^1000的解决方案的301位。

您查看过什么是mathString吗?如果这是2^1000,比32大,但int可以处理,我很确定,所以我不确定类型转换会做什么,但可能不是您想要的。您是否应该使用
biginger
?错误的良好解释。。。修正“returns-2147483648”以与@GrantWinney评论保持一致会让它变得更好。这不是有点与答案无关吗?我的意思是,如果他给数学分配-1,他也会得到同样的例外。