我想将十进制字符串转换为整数,但我一直得到以下错误:System. exe异常:输入字符串的格式不正确。
var myString = "18.7"; var myInteger = Int32.Parse(myString); //flaging an error here Console.WriteLine(myInteger) //desired result = 18
字符串
osh3o9ms1#
您应该将其解析为double类型并将其转换为整数
var myString = "18.7"; var myInteger = (int)Convert.ToDouble(myString); Console.WriteLine(myInteger) //desired result = 18
字符串转换将是这样的
在某些情况下,你的字符串可能像18,7一样,它依赖于CultureInfo进行转换。这使得18.7不可格式化。至于文化独立性,你可以像下面这样转换它
18,7
CultureInfo
18.7
var myString = "18.7"; var myInteger = (int)Convert.ToDouble(myString,CultureInfo.InvariantCulture.NumberFormat); Console.WriteLine(myInteger) //desired result = 18
型
tjrkku2a2#
你得到错误的原因是因为字符串“18.7”不是一个有效的整数格式。整数基本上是整数。所以要将十进制字符串转换为整数,你可以使用Math.Floor()或Math.Ceiling()方法,它们分别截断或舍入十进制值。举例来说:Math.Floor(Convert.ToDouble(“18.7”)); //will return 18Math.Ceiling(Convert.ToDouble(“18.7”)); //will return 19
Math.Floor()
Math.Ceiling()
Math.Floor(Convert.ToDouble(“18.7”)); //will return 18
Math.Ceiling(Convert.ToDouble(“18.7”)); //will return 19
2条答案
按热度按时间osh3o9ms1#
您应该将其解析为double类型并将其转换为整数
字符串
转换将是这样的
在某些情况下,你的字符串可能像
18,7
一样,它依赖于CultureInfo
进行转换。这使得18.7
不可格式化。至于文化独立性,你可以像下面这样转换它
型
tjrkku2a2#
你得到错误的原因是因为字符串“18.7”不是一个有效的整数格式。整数基本上是整数。所以要将十进制字符串转换为整数,你可以使用
Math.Floor()
或Math.Ceiling()
方法,它们分别截断或舍入十进制值。举例来说:
Math.Floor(Convert.ToDouble(“18.7”)); //will return 18
Math.Ceiling(Convert.ToDouble(“18.7”)); //will return 19