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);
}
这是我的代码,我目前 运行 正在处理中。 我正在接收以度为单位的角度值。
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);
}