Schlüsselwort : strictfp
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;
}
}
© (2006-2017) Philipp Gressly Freimann