代码 :
int TopAttuale = Int32.Parse("1579.998779296875");
它说
System.FormatException:输入字符串的格式不正确。
但这就是我所拥有的。如何将该字符串转换为 INT(所以 1579,我不关心逗号)?
代码 :
int TopAttuale = Int32.Parse("1579.998779296875");
它说
System.FormatException:输入字符串的格式不正确。
但这就是我所拥有的。如何将该字符串转换为 INT(所以 1579,我不关心逗号)?
做:
(int) double.Parse(inputstring)
听起来您应该decimal
先解析它,然后再转换为int
. (我会使用decimal
而不是double
因为你真的有十进制输入;decimal
会更准确地表示你的源数据。不过,当你投射它时,它不应该有任何区别。)
// Parse using the invariant culture so that it always uses "." as the
// decimal separator
decimal parsed = decimal.Parse(text, CultureInfo.InvariantCulture);
int value = (int) parsed;
或者,查看是否有小数点,如果有,则修剪其后的所有内容,然后解析结果。
decimal.ToInt32(decimal.Parse("1579.998779296875"))
试试这个代码。
decimal a= decimal.Parse("1579.998779296875");
a=Math.Floor(a);
int b=(int)a;
Console.WriteLine(b);
它显示 1579。根据需要。
您正在尝试将浮点值转换为整数,这直接是不可能的。但如果你必须这样做,而不是先将字符串转换为双精度,然后再将双精度转换为整数。
string str = "1579.998779296875";
double val = Convert.ToDouble(str);
int val1 = Convert.ToInt32(val);
尝试Decimal.Parse
方法并将其转换为int
:
int TopAttuale = (int) Decimal.Parse(inputString)
或使用Decimal.TryParse
方法:
string value;
decimal number;
value = "1579.998779296875";
if (Decimal.TryParse(value, out number))
int result = (int) number;
else
Console.WriteLine("Unable to parse '{0}'.", value);
这只是忽略了小数点后的所有内容。请注意,这不会让您知道字符串是否根本不是数字。
public int IntFromString(string str)
{
int result = 0;
foreach (char c in str)
{
if (!char.IsDigit(c))
{
break;
}
result = result * 10 + c - '0';
}
return result;
}