我想检测double是否是一个完美正方形。检测一个double是否是Java中的完美正方形
为了检测完全平方为的平方根是一个整数这些数字,我会做类似
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这样就不会换号工作,这确实是一个完美的正方形。
什么是以小数为单位的“完美平方”?一个有限小数的平方?在二进制?请注意,在浮点数中,'0.1 * 0.1'导致'0.010000000000000002'为'0.1',不能准确表示。 – LutzL