Schlüsselwort : strictfp

Gehe zu : static   Gehe zu : super

Beschreibung strictfp

Klassen, Interfaces oder Methoden mit diesem Schlüsselwort versehen garantieren, dass die Resultate von float (oder double) Ausdrücken sogenannt "FP-strict" sind.
Das bedeutet, dass dem Java-Compiler nicht mehr die Möglichkeit gegeben wird, andere Formate (z. B. float-extended-exponent) zu verwenden.
Anders ausgedrückt: strictfp-Variable haben auf allen virtuellen Maschinen exakt dieselbe binäre Darstellung, was garantiert, dass Rundungsfehler auf allen virtuellen gleich behandelt werden. Andere Darstellungen (z. B. für den Math-Coprozessor) sind zwar unter Umständen schneller, oder sogar genauer, aber eben nicht auf allen Plattformen gleich.

Beispiel

Dieser Code kann von Plattform zu Plattform ein anderes Resultat liefern:
  public class MyMath {
    public static float muldif(float a, float b) {
      float zwischen = a * b;
      return zwischen / b;
    }
  }

Dieses Beispiel liefert auf allen Plattformen das selbe Resultat:
  public strictfp class MyMath {
    public static float muldif(float a, float b) {
      float zwischen = a * b;
      return zwischen / b;
    }
  }