我有一个小数变量,我想确定它是否是“int”
public bool IsanInt(decimal variable)
所以如果传入的变量为1,我想返回true 如果它是1.5,它将返回false .5将是假的 10将是真的
进行此检查的最佳方法是什么?
答案 0 :(得分:4)
你走了:
class Program
{
static void Main(string[] args)
{
Console.WriteLine(IsInt(3.0m)); // True
Console.WriteLine(IsInt(3.1m)); // False
}
public static bool IsInt(decimal variable)
{
return ((variable % 1) == 0);
}
}
基本上,这种方法就是你所需要的。我只是包含了整个控制台程序,以便您可以看到结果。
修改强>
所以,在对下面的评论进行了一些头脑风暴之后,我发现如果不是不可能(我没有找到方法),找到值是decimal
还是“integer
是非常困难的“如果十进制值以非常高的值提供。十进制值的值高于偶数UInt64
。当你运行这行代码时:
Console.WriteLine(Decimal.MaxValue - 0.5m);
输出:
79228162514264337593543950334
...你会看到它在周期后不会打印小数值。有一个最大的限制是强制截断,所以你永远不会看到0.5是那个大值的一部分。我的方法无法解决这个限制。我不确定在C#或.NET中是否有任何可以做到的事情,但我全都听见了。
有一篇很好的文章介绍了decimal
可以和不能做什么......比我认为MSDN提供的更好:
答案 1 :(得分:3)
public bool IsInteger(decimal value)
{
return value == Math.Round(value);
}
答案 2 :(得分:2)
像
这样的东西return Math.Round(n) == n