我想檢測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