strictfp
ist ein Schlüsselwort, und kann als nicht Nicht Zugriffsmodifikator für Klassen oder ein Verfahren (aber nie Variablen) verwendet werden. Das Markieren einer Klasse als strictfp
bedeutet, dass jeder Methodencode in der Klasse den IEEE 754-Standardregeln für Gleitkommawerte entspricht.
Ohne diesen Modifikator könnten sich in den Methoden verwendete Gleitkommawerte plattformabhängig verhalten. Damit können Sie vorhersagen, wie sich Ihre Gleitkommawerte verhalten, unabhängig von der zugrunde liegenden Plattform, auf der die JVM ausgeführt wird. Der Nachteil ist, dass, wenn die zugrunde liegende Plattform in der Lage ist, eine höhere Genauigkeit zu unterstützen, eine strictfp
Methode nicht in der Lage sein wird, davon zu profitieren.
Wenn Sie nicht eine Klasse als strictfp
deklarieren, können Sie immer noch strictfp
Verhalten auf einer Methode-by-Methode Basis, durch ein Verfahren, wie strictfp
erklärt.
~ SCJP Sun®Certified Programmierer für Java ™ 6 - Kathy Sierra & Bert Bates ~
Immer, es sei denn, Sie benötigen die Leistung tatsächlich mehr als Sie Reproduzierbarkeit benötigen. – Antimony
@Antimony - oder die Präzision/Richtigkeit. Beispielsweise verwenden x86/x64 interne 80-Bit-Fließkomma-Register, so dass das Ergebnis für eine lange Berechnung ohne strictfp genauer ist. –
@Robert Tatsächlich garantiert die Spezifikation begrenzte Präzision der Mantisse. Der einzige Unterschied ist, dass es eine größere Exponentenpräzision als normal verwenden kann, die in seltenen Fällen aufgrund von Doppelrundung Unterschiede aufweist. – Antimony