Warum ist Number nicht Comparable

Das ist eine Frage, die gerade im Team aufgetaucht ist bei der Berechnung für die Darstellung von Charts.

Die schnelle Antwort hierzu ist, dass von Number als Haupt-Typ sehr unterschiedliche Kind-Typen abgeleitet werden. Man wollte das Grundverhalten dieser Typen nicht vorbestimmen. Weiterhin sind diese Kind-Typen untereinander nicht „generisch“ vergleichbar.

Im Zweifelsfall ist man dazu gezwungen seinen eigenen Comparator zu schreiben. Dieser kann z. B. davon abhängig sein, welchen Rundungsfehler man annimmt. So kann man Gleichheit in bestimmten Intervallen definieren, zwei Zahlen a und b sind gleich, wenn (b-d) <= a <= (b+d); d>=0 ist. Oder man normalisiert auf den größten Zahlentyp und vergleicht dort.

Auf alle Fälle stößt man hier an die Grenzen der Umsetzung auf Maschinenarchitektur. Siehe z. B. strictfp.

(Siehe stackoverflow)