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,例如)
答案 0 :(得分:4)
23.4
不是整数,因此您无法使用int.Parse
(或int.TryParse
)。相反,您必须将其解析为十进制数,如decimal
或double
。您可以使用TryParse
等string 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)
您应该使用double
或float
作为有理数:
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,并且当它无法解析数据时会抛出异常。如果要表示非整数,请使用不同的数字表示。