检查数字是否有小数点

时间:2015-10-14 05:43:53

标签: c#

我需要检查数字是否有小数点。

实施例

Figure      Result
=====================
1           false
1.0         true
0.0         true
0           false

我发现检查图值的不同解是整数或双精度。但我想检查数字是否有小数点。例如。图是1.0。它应该返回true结果。

您能为我提供更好的解决方案吗?

1 个答案:

答案 0 :(得分:4)

鉴于输入很少并且假设你所谓的 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 - 您想要检查的类型的方法:

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);
    }
}

如果您的数据类型为decimaldoublefloat,则最简单的方法是确定它们是否会生成有效的整数,然后执行模数检查:

decimal figure = 1.0m;
Console.WriteLine(figure % 1 == 0 ? "Integer Number" : "Floatingpoint Number"); // deviding by 1 leaves no remainder

您应该更具体地了解您的目标是什么,尤其是您的数据类型。