可能重复:
确定输入是否为完美正方形的好算法是什么?
我想要检查数字的最短和最简单的方法是 C# 中的完美正方形
一些完美的正方形:
1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ......
    可能重复:
确定输入是否为完美正方形的好算法是什么?
我想要检查数字的最短和最简单的方法是 C# 中的完美正方形
一些完美的正方形:
1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ......
    可能会检查数字的平方根是否有小数部分,或者它是否是整数。
在实施方面,我会考虑这样的事情:
double result = Math.Sqrt(numberToCheck);
bool isSquare = result%1 == 0;
isSquare现在应该true适用于所有方格和false所有其他方格。
这是检查平方根是否为整数的变体:
bool IsPerfectSquare(double input)
{
    var sqrt = Math.Sqrt(input);
    return Math.Abs(Math.Ceiling(sqrt) - Math.Floor(sqrt)) < Double.Epsilon;
}
Math.Ceiling将向上舍入到下一个整数,而Math.Floor将向下舍入。如果它们相同,那么你有一个整数!
这也可以写成 oneliner:
if (int(Math.Ceiling(Math.Sqrt(n))) == int(Math.Floor(Math.Sqrt(n)))) /* do something */;
        public bool IsPerferctSquare(uint number)
    {
        return (Math.Sqrt(number) % 1 == 0);
    }
    public bool IsPerfectSquare(int num)
{
   int root = (int)Math.Sqrt(num);
   return (int) Math.Pow(root,2) == num;
}