如何在 C# 中将十进制数从字符串解析为整数?

How do I parse a decimal number from a string to an integer in C#?

我想将十进制字符串转换为整数,但我一直收到以下错误:

System.FormatException: Input string was not in a correct format.

var myString = "18.7";
var myInteger = Int32.Parse(myString); //flaging an error here
Console.WriteLine(myInteger) //desired result = 18

您应该将其解析为双精度类型并将其转换为整数

var myString = "18.7";
var myInteger = (int)Convert.ToDouble(myString); 
Console.WriteLine(myInteger) //desired result = 18

转换会像这样

  • “18.7”(字符串值)到 18.7(双精度值)
  • 18.7(双精度类型)到 18(整数类型 - 小数部分被删除)

在某些情况下,您的字符串可能类似于 18,7,它依赖于 CultureInfo 进行转换。这使得 18.7 无法格式化。

关于文化独立性,你可以像下面这样转换

var myString = "18.7";
var myInteger = (int)Convert.ToDouble(myString,CultureInfo.InvariantCulture.NumberFormat); 
Console.WriteLine(myInteger) //desired result = 18