【问题标题】:Check whether figure has decimal point or not检查数字是否有小数点
【发布时间】:2016-01-12 01:49:42
【问题描述】:

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

示例。

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

我发现检查数字值是整数还是双精度的不同解决方案。但我想检查数字是否有小数点。例如。图是1.0,应该返回真结果。

能否请您提供更好的解决方案?

【问题讨论】:

标签: c#


【解决方案1】:

鉴于输入很少,并假设您所称的 figurestring 的形式提供给您,这就是我的想法。

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

如果您的数字是decimaldoublefloat 类型,确定它们是否会生成有效整数的最简单方法是进行模数检查:

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

你应该更具体地说明你的目标是什么,尤其是你的数字是什么类型的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多