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

问题描述 投票:0回答:2

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

System.FormatException:输入字符串的格式不正确。

var myString = "18.7";
var myInteger = Int32.Parse(myString); //flaging an error here
Console.WriteLine(myInteger) //desired result = 18
c# asp.net string decimal decimal-point
2个回答
6
投票

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

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

1
投票

您收到错误的原因是字符串“18.7”不是有效的整数格式。整数基本上是整数。因此,要将十进制字符串转换为整数,可以使用

Math.Floor()
Math.Ceiling()
方法,分别截断或四舍五入十进制值。例如:

Math.Floor(Convert.ToDouble(“18.7”)); //will return 18
Math.Ceiling(Convert.ToDouble(“18.7”)); //will return 19

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.