2010-07-04 43 views
2

如何將字符串轉換爲C#中的數字?有什麼不同的方法。字符串到數字

+1

歡迎來到StackOverflow。請正確標記您的問題。 C和C#是非常不同的語言。 – Oded 2010-07-04 15:50:08

回答

2

Int32.Parse Double.Parse Decimal.Parse

1

INT myVar的= int.Parse(字符串);

但是隻使用Parse,如果傳入的字符串不是數字,您將需要某種形式的異常處理。

這就是爲什麼你應該使用TryParse

然後你就可以有

int nr; 
if (int.TryParse(mystring, out nr) == false) { 
//do something as converting failed 
} 
12

大多數數值元的有解析和TryParse方法,我建議使用這些。如果被分析的字符串的格式不被識別,則解析會拋出異常,而TryParse是容錯的。

int num = int.Parse("1"); 

int num = 0; 
if (int.TryParse("1", out num)) { 
    // do something here. 

您還可以使用Convert.ToInt32等....

5
static void Main(string[] args) 
{ 
    String textNumber = "1234"; 
    int i = Int32.Parse(textNumber); 
    double d = Double.Parse(textNumber); 
    decimal d2 = Decimal.Parse(textNumber); 
    float f = float.Parse(textNumber); 
} 

數值發送這些命令執行後:

textNumber = "1234" 
i = 1234 
d = 1234.0 
d2 = 1234 
f = 1234.0 
0

在C#中,你可以將字符串轉換爲一個號碼:

Convert.ToUInt32("123"); 

Convert.ToInt64("678"); // to long 

Convert.ToDouble("123"); 

Convert.ToSingle("146"); 

你可以檢查該網站的全部細節:http://msdn.microsoft.com/en-us/library/bb397679.aspx

0

有一點要注意的,解析十進制數時:

的.NET框架將使用Windows配置的小數分隔符。例如在德國,我們在美國編寫「1.129.889,12」,即「1,129,889.12」。因此double.Parse(str)將表現不同。

但是,您可以指定IFormatProvider對象作爲第二個參數(這也適用於ToString方法)。我打一個比方:

var ci = CultureInfo.InvariantCulture; 
double a = double.Parse("98,89"); 
double b = double.Parse("98,89", ci); 
Console.WriteLine(a.ToString(ci)); 
Console.WriteLine(b.ToString(ci)); 

我的電腦上的輸出是:

98.89 
9889 

所以,如果你是例如讀取配置文件時,使用一種數字格式的獨立界面語言(這對配置文件有意義),一定要指定一個合適的IFormatProvider。