我可以想到几种方法,例如.
Convert.ToInt32(floatingPoint) - floatingPoint == 0; Math.Truncate(floatingPoint) - floatingPoint == 0; floatingPoint % 1 == 0; Math.Floor(floatingPoint) == floatingPoint; //etc...
但哪种方法最可靠?
您不应检查精确相等为零,因为浮点数通常仅包含与您分配给它的数字最接近的可能近似值.
例如,类型可能表示的最接近42的值可能类似于42.00000000000000662,您仍然希望将其计为整数值.
取值和舍入值之间的差值,然后取其值的绝对值(这样它不是负数)并比较一个小值:
if (Math.Abs(Math.Round(floatingPoint) - floatingPoint) < 0.000001) ...