代码:
int TopAttuale = Int32.Parse("1579.998779296875");
它说
System.FormatException:输入字符串的格式不正确。
但这就是我所拥有的。如何将该字符串转换为INT(所以1579,我不关心逗号)?
答案 0 :(得分:9)
执行:
(int) double.Parse(inputstring)
答案 1 :(得分:5)
听起来你应首先将其解析为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;
或者,查看是否有小数点,如果是,则修改后面的所有内容,然后解析结果。
答案 2 :(得分:5)
decimal.ToInt32(decimal.Parse("1579.998779296875"))
答案 3 :(得分:0)
您正在尝试以整数转换浮点值,这是不可能的。 但是如果你必须这样做,那么首先在double中转换字符串然后将整数转换为double。
string str = "1579.998779296875";
double val = Convert.ToDouble(str);
int val1 = Convert.ToInt32(val);
答案 4 :(得分:0)
尝试Decimal.Parse
方法,cast方法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);
答案 5 :(得分:0)
这会忽略小数点后的所有内容。 请注意,如果字符串根本不是数字,则不会让您知道。
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;
}
答案 6 :(得分:0)
试试这段代码。
decimal a= decimal.Parse("1579.998779296875");
a=Math.Floor(a);
int b=(int)a;
Console.WriteLine(b);
显示1579.根据需要。