无法将字符串转换为 int:“System.FormatException”
本文关键字:System FormatException int 字符串 转换 | 更新日期: 2023-09-27 17:55:32
我在将字符串转换为整数时遇到问题,我的程序在这一行失败
int newS = int.Parse(s);
附消息:
mscorlib 中发生了类型为"System.FormatException"的未处理异常.dll
我期望从我的程序中返回的数字相当大。以下是整个程序:
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。尝试改用乌龙。我不确定这一点,但也许签名的长可能会起作用。
编辑:实际上,在msdN页面中,它说:
如果整数文本表示的值超出 ulong 的范围,则会发生编译错误。
所以你可能需要一个替身。
Math.Pow(2, 1000) 返回 -2147483648。
因此,您最终会在列表中找到 11 个项目,第一个是"-"。
不能将减号转换为 int。
在所有语言的所有类型中,您可以保存的数字都有限制。c# 的 int 是 -2,147,483,648 到 2,147,483,647。https://msdn.microsoft.com/en-us/library/5kzh1b5w.aspx
数学宝返回一个双精度值,当你想把它转换为 int 时,你的变量得到值 0
Math.Pow(2,1000) 返回:1.07150860718627E+301。
如果使用双精度格式,您将尝试转换 . 以及 E 和 +,它们不是 int,则不能使用 int 来保存它。
返回此处回答的格式异常:国际。解析,输入字符串格式不正确
也许你可以试试这个:
int newS;
如果(!TryParse(Textbox1.Text, out newS)) newS= 0;
结果 +=新S;
但不会使用2^1000的301位数字。