2010-07-04 39 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。