我可以想到几种方法,例如。

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) ...

10-02 00:56