为什么 Convert.ToInt32 或 Int32.Parse 对我不起作用?

Jam*_*hen 0 .net c# integer

它应该是一个简单的代码:

        string qty = "211.0000";
        Console.WriteLine(Int32.Parse(qty));
Run Code Online (Sandbox Code Playgroud)

我尝试使用Convert.ToInt32or Int32.Parse,但它们都抛出错误:错误:用户代码中的异常:

System.FormatException:输入字符串的格式不正确。
在 System.Number.StringToNumber(String str、NumberStyles options、NumberBuffer& number、NumberFormatInfo info、Boolean parseDecimal)
在 System.Number.ParseInt32(String s、NumberStyles style、NumberFormatInfo info) 在 Rextester.Program.Main(String[] args)

我在定义字符串并给出值时是否犯了任何错误?我尝试过使用stringorString来定义变量。如果我使用的话它会起作用Console.WriteLine(Convert.ToInt32("211.0000"))

顺便说一句,我正在http://rextester.com/进行测试

Dmi*_*nko 5

当使用浮点值(具有明确的小数分隔符.)时,您应该使用decimalor double

  using System.Globalization;

  ...

  string qty = "211.0000";

  // be careful: different cultures have different decimal separators
  decimal result = decimal.Parse(qty, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

或者

  double result = double.Parse(qty, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

获得浮点表示后,您可以将其四舍五入为整数

  int value = (int) (result > 0 ? result + 0.5 : result - 0.5); 
Run Code Online (Sandbox Code Playgroud)

或者

  int value = (int) (Math.Round(result)); 
Run Code Online (Sandbox Code Playgroud)