Ich möchte erkennen, ob ein Doppel, wie 6.25 ist ein perfektes Quadrat oder nicht.Erkennen, ob ein Double ist ein perfektes Quadrat in Java
Um perfekte Quadrate für die Zahlen, deren Quadratwurzel eine ganze Zahl zu erkennen, ich so etwas wie
public boolean isPerfectDouble(double i)
{
if (Double.isInfinite(i)) {
return false;
}
double sqrt = Math.sqrt(i);
return sqrt == Math.floor(sqrt) && sqrt*sqrt == i;
}
jedoch tun würde, das ist wie 6.25 für Zahlen nicht funktionieren würde, was in der Tat ein perfektes Quadrat ist.
Was ist ein "perfektes Quadrat" in Bezug auf Dezimalbrüche? Ein Quadrat einer endlichen Dezimalfraktion? In binär? Beachten Sie, dass '0.1 * 0.1' in Fließkommazahlen zu' 0.010000000000000002' führt, da '0.1' nicht exakt dargestellt werden kann. – LutzL