我可以想到几种方法,例如。
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) ...