1

代码 :

int TopAttuale = Int32.Parse("1579.998779296875");

它说

System.FormatException:输入字符串的格式不正确。

但这就是我所拥有的。如何将该字符串转换为 INT(所以 1579,我不关心逗号)?

4

7 回答 7

9

做:

(int) double.Parse(inputstring)
于 2012-08-28T10:20:18.857 回答
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;

或者,查看是否有小数点,如果有,则修剪其后的所有内容,然后解析结果。

于 2012-08-28T10:20:47.760 回答
5
decimal.ToInt32(decimal.Parse("1579.998779296875"))
于 2012-08-28T10:23:12.767 回答
0

试试这个代码。

decimal a= decimal.Parse("1579.998779296875");
a=Math.Floor(a);
int b=(int)a;
Console.WriteLine(b);  
它显示 1579。根据需要。

于 2012-08-28T10:53:05.563 回答
0

您正在尝试将浮点值转换为整数,这直接是不可能的。但如果你必须这样做,而不是先将字符串转换为双精度,然后再将双精度转换为整数。

       string str = "1579.998779296875";
        double val = Convert.ToDouble(str);
        int val1 = Convert.ToInt32(val);
于 2012-08-28T10:33:57.287 回答
0

尝试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);
于 2012-08-28T10:34:04.097 回答
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;
}
于 2012-08-28T10:36:34.770 回答