鉴于输入很少,并假设您所称的 figure 以string 的形式提供给您,这就是我的想法。
var figures = new[] {"1", "1.0", "0.0", "0"};
foreach(var figure in figures)
{
if (figure.Contains("."))
{
Console.WriteLine("point");
}
else
{
Console.WriteLine("no point");
}
}
Regex 可能是更好的选择。
foreach (var figure in figures)
{
if (Regex.IsMatch(figure, @"^\d+\.\d+$"))
{
Console.WriteLine("{0}: Floatingpoint Number", figure);
}
else if (Regex.IsMatch(figure, @"^\d+$"))
{
Console.WriteLine("{0}: Integer Number", figure);
}
else
{
Console.WriteLine("{0}: No Number", figure);
}
}
再一次,您可以使用您想要检查的类型的 TryParse-Methods:
foreach (var figure in figures)
{
int intOut;
decimal decimalOut;
// Note that you would have to check for integers first, because
// integers would otherwise be detected as valid decimals in advance.
if (int.TryParse(figure, out intOut))
{
Console.WriteLine("{0}: Integer Number", figure);
}
else if (decimal.TryParse(figure, out decimalOut))
{
Console.WriteLine("{0}: Floatingpoint Number", figure);
}
else
{
Console.WriteLine("{0}: No Number", figure);
}
}
如果您的数字是decimal、double 或float 类型,确定它们是否会生成有效整数的最简单方法是进行模数检查:
decimal figure = 1.0m;
Console.WriteLine(figure % 1 == 0 ? "Integer Number" : "Floatingpoint Number"); // deviding by 1 leaves no remainder
你应该更具体地说明你的目标是什么,尤其是你的数字是什么类型的。