可能重复:
确定整数的平方根是否为整数的最快方法
有什么方法可以看出一个数字是否是一个完美的正方形?
bool IsPerfectSquare(long input)
{
// TODO
}
Run Code Online (Sandbox Code Playgroud)
我正在使用C#,但这与语言无关.
奖励点是为了清晰和简洁(这不是代码高尔夫).
编辑:这比我想象的要复杂得多!事实证明,双精度问题有两种表现形式.首先,Math.Sqrt采用了一个不能精确控制的长度(感谢Jon).
其次,当你拥有一个巨大的,接近完美的正方形时,双精度将失去小值(.000 ... 00001).例如,我的实现未通过Math.Pow(10,18)+1的测试(我的报告为真).