Hallo,
ich habe ein C+±Programm geschrieben, das eine natürliche Zahl auf bestimmte Eigenschaften überprüft. Zentral ist dabei der Test auf Ganzzahligkeit:
bool ganzzahl(double n)
{
if(fmod(n, 1.0) == 0.0) return true;
else return false;
}
Unter anderem wird geprüft, ob es sich um eine Kubikzahl handelt:
bool kubik(double n)
{
if(ganzzahl(pow(n,1.0/3.0))) return true;
else return false;
}
Das Programm funktioniert soweit gut, bis auf diesen Test. Bis 3^3 wird korrekt „Kubikzahl“ ausgegeben, ab 4^3 nicht mehr. Wenn ich mir die Kubikwurzel ausgeben lasse, sieht sie allerdings immer ganzzahlig aus.
Bei der Quadratzahl-Funktion z.B. gibt es dagegen keine Probleme, sie funktioniert analog mit sqrt(n).
Hat jemand eine Idee, woran das liegen könnte? Ist pow() irgendwie besonders ungenau? Oder habe ich irgendeinen dummen Fehler drin?
Danke und Gruß,
Kronf