Wie speichere ich unendlich in einem BigDecimal (Java)?

8

Ich schreibe Algorithmen in Methoden, die BigDecimal-Werte zurückgeben, aber ab und zu wird das Ergebnis + oder - unendlich berechnet.
Anstatt das Programm abstürzen zu lassen, möchte ich die Exception abfangen und unendlich als Wert zurückgeben, so wie es möglich wäre, wenn die Methode ein Double zurückgeben würde.

zB Double.POSITIVE_INFINITY;

Wie kann ich unendlich in BigDecimal speichern? Oder gibt es eine andere Möglichkeit, dies zu tun?

%Vor%     
user2989759 28.12.2013, 12:35
quelle

1 Antwort

10

BigDecimal hat nicht das Konzept der Unendlichkeit. Ich kann mir drei Möglichkeiten vorstellen:

  1. Der sauberste Ansatz leitet wahrscheinlich Ihre eigene MyBigDecimal -Klasse ab, fügt ein Unendlichkeits-Flag hinzu, das Ihnen sagt, ob die Instanz unendlich ist, und überschreibt die Methoden, für die sie relevant wäre ( Das wäre die meisten von ihnen, würde ich denken), mit der Version der Basisklasse, wenn Sie nicht unendlich und Ihren eigenen Code halten, wenn Sie sind.

  2. Sie könnten null als Flag-Wert in Ihrem Code verwenden, obwohl das ein wenig schmerzhaft sein könnte. Zum Beispiel:

    %Vor%
  3. Wenn Sie null bereits für etwas anderes verwenden, könnten Sie eine BigDecimal -Instanz haben, die eigentlich nicht unendlich enthält, die Sie aber vorgeben, containts und verwenden Sie == , um dagegen zu prüfen. Zum Beispiel:

    %Vor%
T.J. Crowder 28.12.2013, 12:38
quelle