int.Parse不工作

时间:2014-10-27 16:18:55

标签: c# parsing

static void Main()
{        
    Console.Write("Please input a number: ");
    Console.WriteLine("\n The number you selected was {0} \n", method());
}

static int method()
{
    int var = int.Parse(Console.ReadLine());
    return var;
}

上面的代码抛出了格式异常。我尝试将输入存储在字符串变量中然后解析,但它有同样的问题。我也尝试使用Convert类,但仍然遇到同样的问题。如果有人能告诉我错在哪里,我将不胜感激。

我试图转换23.4,例如。 (它适用于自然数,但为什么不是4345.5,例如)

4 个答案:

答案 0 :(得分:4)

23.4不是整数,因此您无法使用int.Parse(或int.TryParse)。相反,您必须将其解析为十进制数,如decimaldouble。您可以使用TryParsestring input = Console.ReadLine(); double number; if(double.TryParse(input.Trim(), out number)) { // valid number Console.WriteLine("\n The number you selected was {0} \n", number); } else { Console.WriteLine("Please enter a real number."); } 方法来防止异常,如果它不是有效数字:

(int)number
从你的评论

更新我可以看到你想要显示一个整数。

您可以使用int integer = (int) number; // decimal part is truncated integer = (int) Math.Round(number, 2, MidpointRounding.AwayFromZero); // rounded to two digits 获取一个整数,其中只是截断小数部分。如果您希望它首先使用Double.TryParse,请先使用<{3}}。

string numberString = number.ToString("N0");

如果您只想显示不带小数部分的字符串,您也可以使用Math.Round

{{1}}

答案 1 :(得分:1)

您应该使用doublefloat作为有理数:

float num = float.Parse(Console.ReadLine())

答案 2 :(得分:1)

您可以返回输入字符串的整数部分(例如3.6变为3),如下所示:

static int method()
{
    float var = float.Parse(Console.ReadLine());
    return (int)Math.Floor(var);
}

答案 3 :(得分:0)

Integer32.Parse用于解析32位整数。它无法解析不能表示为32位整数的数字,例如23.4,并且当它无法解析数据时会抛出异常。如果要表示非整数,请使用不同的数字表示。