我试图将字符串"127.0"
转换为整数。
我试过这个功能:
int getInt(string numStr)
{
int result;
int.TryParse(numStr, out result);
return result;
}
但当我将其称为int x = getInt("127.0");
时,int.TryParse()
会将result
设为0。
当我重写这样的函数时:
int getInt(string numStr)
{
result=Convert.ToInt32(numStr);
return result;
}
相同的getInt()
调用会抛出此异常:
Input string was not in a correct format.
答案 0 :(得分:6)
这里的问题是“127.0”不是整数,它是一个浮点数。您需要使用其他浮点类型之一来解析它(例如double
,float
,Decimal
等。)
您可能需要考虑剥离小数点后的任何值并尝试解析它,或者将其解析为另一种类型并将其转换为整数:
int result = (int)Convert.ToDouble("1.270");
您还可以利用Math.Truncate()
函数来获取值的整数部分:
int result = (int)Math.Truncate(Convert.ToDouble("127.0"));
答案 1 :(得分:0)
首先,您需要检查int.TryParse()
的返回值。如果它返回false
,则无法转换该字符串。
如果你这样做了,你会看到它返回false,因为 127.0 没有描述整数值(它描述了一个浮点值)。
请注意,decimal.TryParse()
会在此处成功。您需要弄清楚是否需要整数或浮点值,并拒绝不正确的数据。
答案 2 :(得分:0)
int不能包含小数点;这使它成为double,float或decimal。尝试从小数点向右拉数字减去任何东西,如下所示:
int getInt(string numStr)
{
int result;
string[] splitup;
string number;
if (numstr.Contains('.'))
{
splitup = numstr.Split('.');
number = splitup[0];
int.TryParse(number, out result);
}
else
{
int.TryParse(numstr, out result);
}
return result;
}
答案 3 :(得分:0)
除了您正在解析的内容不是整数之外,我个人使用TryParse方法。许多.NET类型都有它,而且它有点安全#34; (它不会抛出异常)而不仅仅是解析一个字符串。
示例:
string stringValue = "127.0";
int intValue;
if(Int32.TryParse(stringValue, out intValue))
{
// return value
}
// handle the failure
如果你不喜欢这样,我会把它包裹起来试试......