我需要检查数字是否有小数点。
实施例
Figure Result
=====================
1 false
1.0 true
0.0 true
0 false
我发现检查图值的不同解是整数或双精度。但我想检查数字是否有小数点。例如。图是1.0。它应该返回true结果。
您能为我提供更好的解决方案吗?
答案 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);
}
}
如果您的数据类型为decimal
,double
或float
,则最简单的方法是确定它们是否会生成有效的整数,然后执行模数检查:
decimal figure = 1.0m;
Console.WriteLine(figure % 1 == 0 ? "Integer Number" : "Floatingpoint Number"); // deviding by 1 leaves no remainder
您应该更具体地了解您的目标是什么,尤其是您的数据类型。