簡體   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