Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Problem:
Ich nutze in meinem Programm die Apfloat-Library. So weit funktioniert auch alles. Ich bleibe jedoch noch an einem letzten Punkt hängen momentan.
Fehlermeldung:
Code:
java.lang.ArithmeticException: Power of negative number; result would be complex
Code-Zeile:
Java:
y = ApfloatMath.pow(y, exp.termValue(x));
Ausschnit aus der Apfloat-Doku:
Code:
public static Apfloat pow(Apfloat x, Apfloat y) throws ArithmeticException, ApfloatRuntimeException
Arbitrary power. Calculated using log() and exp().
This method doesn't calculate the result properly if x is negative and y is an integer. For that you should use pow(Apfloat,long).
Parameters:
[COLOR="Red"]x - The base.[/COLOR]
y - The exponent.
Returns:
xy.
Throws:
ArithmeticException - If both x and y are zero, [COLOR="Red"]or x is negative[/COLOR].
ApfloatRuntimeException
Vermutung:
Die rot markierten Stellen im Doku-Ausschnitt geben mir ja die Begründung, warum es so nicht funktioniert. Mit positiven Werten funktioniert das Ganze ja. Doch rein mathematisch gesehen, ist ja möglich negative Zahlen zu quadrieren oder so ... Mit Apfloat geht das so wohl nicht. Hat mir da vielleicht jemand einen Tipp, wie ich das lösen kann? Langsam verzweifel ich daran ... Such schon seit ner Woche nach ner Lösung -.-
Teils ja ... Aber da steht ja auch "and y is an integer" ... und das ist eben nicht der Fall! y ist ja auch vom Typ Apfloat!
Eben genau da liegt ja das Problem. Ich weiß eben nich, was ich benutzen soll.
Bei so kleinen Independent-Libraries fährst du oft am besten wenn du dich direkt an die Autoren der Software wendest. Eine Mail-Adresse steht ja auf der Homepage.
Alles klar. Danke. Ich hab mal ne Mail geschrieben, mal schauen, ob was zurück kommt. Ansonsten muss ich vielleicht irgendwie versuchen um ein paar Ecken rum auch auf die Lösung zu kommen.
Das mit deiner Vermutung ist klar. Aber da habe ich eben nicht immer einen Integer-Wert, teilweise eben auch lange dezimalen. Wenn ich von Apfloat auf long umwandle, damit ich auf die andere Methode zugreifen kann, dann verliere ich ja wieder an Genauigkeit. Genau das möchte ich aber eben vermeiden! Theoretisch funktioniert das schon, klar, nur eben mit diesem Genauigkeitsverlust.