如何管理从字符串到int的转换?

时间:2012-08-28 10:18:30

标签: c# .net string int type-conversion

代码:

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

它说

  

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

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

7 个答案:

答案 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.根据需要。