我想检测一个像 6.25 这样的双精度数是否是一个完美的正方形。
为了检测平方根为整数的数字的完美平方,我会做类似的事情
public boolean isPerfectDouble( double i )
{
if (Double.isInfinite(i)) {
return false;
}
double sqrt = Math.sqrt(i);
return sqrt == Math.floor(sqrt) && sqrt*sqrt == i;
}
但是,这不适用于像 6.25 这样的数字,这确实是一个完美的正方形。