无法将字符串转换为 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:“System.FormatException”

你回答了你自己的问题。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位数字。