我想将十进制字符串转换为整数,但我不断收到以下错误:
System.FormatException:输入字符串的格式不正确。
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
,它依赖于CultureInfo
进行转换。这使得 18.7
无法格式化。
至于文化独立性,你可以像下面这样转换
var myString = "18.7";
var myInteger = (int)Convert.ToDouble(myString,CultureInfo.InvariantCulture.NumberFormat);
Console.WriteLine(myInteger) //desired result = 18
您收到错误的原因是字符串“18.7”不是有效的整数格式。整数基本上是整数。因此,要将十进制字符串转换为整数,可以使用
Math.Floor()
或 Math.Ceiling()
方法,分别截断或四舍五入十进制值。例如:
Math.Floor(Convert.ToDouble(“18.7”)); //will return 18
Math.Ceiling(Convert.ToDouble(“18.7”)); //will return 19
希望这有帮助。