# Kubikwurzel berechnen



## Chrissicat (5. Jan 2011)

Servus!
wenn ich 27 eingebe, kommt richtigerweise 9 raus, aber bei 8 kommt 2,666 und bei 216 kommt 21,33 (oder so) raus.. sollte es eigentlich nicht?! :bahnhof:


```
static double root3(double x) {
        double y0 = x / 3; 
        double y = 0;
        while (Math.abs(y0 - y) < 1.0E-12) { 
            y = y0;
            y0 = (2 * y + (x / (y * y))) / 3;
        }
    }
```

in meiner main methode wird einfach nur ein zahl vom benutzer eingelesen (double)

vielen dank im vorraus


----------



## Landei (5. Jan 2011)

Also auf _meinem _Taschenrechner ist die dritte Wurzel von 27 immer noch 3


----------



## MQue (5. Jan 2011)

Schau dir das mal an:

http://www.java-forum.org/allgemeine-java-themen/41315-division-float-double.html


----------



## VfL_Freak (5. Jan 2011)

Moin,

also eine kurze Suche bei Google brachte mir folgende Musterlösung :

```
// Compute the cubic root of x
static float root3(float x) 
{
    float y1 = x / 3;
    float y0 = 0;
    while( Math.abs(y0 - y1) > 1.0E-5 )   // <=== Vergleichswert !
    {
        y0 = y1;
	y1 = (2 * y0 + x / (y0 * y0)) / 3;  // <=== Klammerung !
    }
    return y1;
}
```

Und natürlich hat _Landei _Recht, denn 3*3*3 = 27 q.e.d. 

Gruß
Klaus


----------



## Chrissicat (5. Jan 2011)

hey freak, ich hab mir wie du vielleicht gemerkt hast, diese mustervorlage als ähm mustervorlage genommen.. anscheinend falsch abgeschrieben.. 
danke jedenfalls :toll:


----------



## VfL_Freak (5. Jan 2011)

uiuiui .... 

Klappt es denn jetzt wenigstens ??

Gruß
Klaus


----------



## Chrissicat (6. Jan 2011)

jaja, sicher! bei der aufgabenstellung stand, dass die methode ein double ist.. aber mit double hats nicht geklappt, mit float jedoch sehr wohl und ich wollte es nicht unbedingt ganz abschreiben..  ach mensch, hauptsache es klappt


----------



## Max Matti (6. Jan 2011)

Ansonsten versuch es doch mit Math.sqrt


----------



## Runtime (6. Jan 2011)

@Max Matti: Er braucht die 3. Wurzel, also Math.cbrt.


----------



## Landei (6. Jan 2011)

Wenn schon, dann [c]Math.pow(x, 1.0/3.0);[/c], aber das weiß der TO bestimmt schon. [c]Math.exp(Math.log(x)/3);[/c] sollte auch funktionieren.


----------



## Chrissicat (7. Jan 2011)

hey!
ich glaub ich kann den thread schon schließen, mein fehler ist behoben 
ich bin übrigens eine SIE  und das mit Math.*** kann ich nicht nehmen, muss ja selbst die methode schreiben 
liebes landei, nein, das hab ich nicht gewusst, ich bin noch (!) anfänger 
danke nochmal :toll:


----------

