C# 不使用 int.TryParse 转换数字

C# does not convert Number with int.TryParse

这是我的代码,我目前 运行 正在处理中。 我正在接收以度为单位的角度值。

string dataString = serialPort.ReadLine();
var dataBlocks = dataString.Split(',');
if (dataBlocks.Length < 3)
{
  Debug.LogWarning("Invalid data received");
  return; 
}

int angleX, angleY, angleZ;
if (!int.TryParse(dataBlocks[0], out angleX))
{
   Debug.LogWarning("Failed to parse angleX. RawData: " + dataBlocks[0]);
   return;
}

TryParse 解析角度失败。

“无法解析 angleX。原始数据:174.0”

如您所见,通过串行接口传输的原始数据为 174.0。

而且我不明白为什么它不将字符串解析为整数。

知道为什么会这样吗?

可能与点而不是逗号有关?

您的值中有一个小数点分隔符。这表明它不是整数,而是小数(或实数)值。

您应该使用 decimal.TryParse()double.TryParse() 而不是 int.TryParse() 然后将结果转换为 int。

string val = "17.0";

decimal d = 0;
int i = 0;

if (!decimal.TryParse(val, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d))
{
    Console.WriteLine("Not a decimal");
}
else
{
    i = (int)d;
    Console.WriteLine(i);
}