Das strictfp-Schlüsselwort in Java

1. Einleitung

Standardmäßig sind die Gleitkommaberechnungen in Java plattformabhängig. Daher hängt die Genauigkeit des Gleitkommaergebnisses von der verwendeten Hardware ab.

In diesem Tutorial werden wir lernen , wie man nutzen strictfp in Java plattformunabhängig Gleitkommaberechnungen zu gewährleisten.

2. strictfp Verwendung

Wir können das Schlüsselwort strictfp als Nichtzugriffsmodifikator für Klassen, nicht abstrakte Methoden oder Schnittstellen verwenden:

public strictfp class ScientificCalculator { ... public double sum(double value1, double value2) { return value1 + value2; } public double diff(double value1, double value2) { return value1 - value2; } } public strictfp void calculateMarksPercentage() { ... } public strictfp interface Circle { double computeArea(double radius); }

Wenn wir eine Schnittstelle oder eine Klasse mit strictfp deklarieren, erben alle ihre Mitgliedsmethoden und andere verschachtelte Typen ihreVerhalten.

Beachten Sie jedoch , dass wir das Schlüsselwort strictfp nicht für Variablen, Konstruktoren oder abstrakte Methoden verwenden dürfen.

In Fällen, in denen eine Oberklasse markiert ist, wird unsere Unterklasse dieses Verhalten nicht erben.

3. Wann verwenden?

Das Schlüsselwort Java strictfp ist immer dann nützlich, wenn uns das deterministische Verhalten aller Gleitkommaberechnungen sehr am Herzen liegt:

@Test public void whenMethodOfstrictfpClassInvoked_thenIdenticalResultOnAllPlatforms() { ScientificCalculator calculator = new ScientificCalculator(); double result = calculator.sum(23e10, 98e17); assertThat(result, is(9.800000230000001E18)); result = calculator.diff(Double.MAX_VALUE, 1.56); assertThat(result, is(1.7976931348623157E308)); }

Da die ScientificCalculator- Klasse dieses Schlüsselwort verwendet, wird der obige Testfall auf allen Hardwareplattformen weitergegeben. Bitte beachten Sie, dass JVM , wenn wir es nicht verwenden, jede zusätzliche Genauigkeit verwenden kann, die auf der Hardware der Zielplattform verfügbar ist.

Ein beliebter realer Anwendungsfall dafür ist ein System, das hochempfindliche medizinische Berechnungen durchführt.

4. Fazit

In diesem kurzen Tutorial haben wir darüber gesprochen, wann und wie das Schlüsselwort strictfp in Java verwendet wird.

Wie üblich sind alle vorgestellten Codebeispiele auf GitHub verfügbar.