Le mot-clé strictfp en Java

1. Introduction

Par défaut, les calculs en virgule flottante en Java dépendent de la plate-forme. Ainsi, la précision du résultat en virgule flottante dépend du matériel utilisé.

Dans ce didacticiel, nous allons apprendre à utiliser strictfp en Java pour garantir des calculs en virgule flottante indépendants de la plate-forme.

2. Utilisation strictfp

Nous pouvons utiliser le mot clé strictfp comme modificateur de non-accès pour les classes, les méthodes non abstraites ou les interfaces:

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); }

Lorsque nous déclarons une interface ou une classe avec strictfp, toutes ses méthodes membres et autres types imbriqués héritent de soncomportement.

Cependant, veuillez noter que nous ne sommes pas autorisés à utiliser le mot clé strictfp sur des variables, des constructeurs ou des méthodes abstraites.

De plus, pour les cas où nous avons une superclasse marquée avec elle, cela ne fera pas que notre sous-classe hérite de ce comportement.

3. Quand l'utiliser?

Le mot-clé Java strictfp est pratique chaque fois que nous nous soucions beaucoup du comportement déterministe de tous les calculs en virgule flottante:

@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)); }

Puisque la classe ScientificCalculator utilise ce mot-clé, le cas de test ci-dessus passera sur toutes les plates-formes matérielles. Veuillez noter que si nous ne l'utilisons pas, JVM est libre d'utiliser toute précision supplémentaire disponible sur le matériel de la plate-forme cible.

Un cas d'utilisation populaire dans le monde réel est un système effectuant des calculs médicinaux très sensibles.

4. Conclusion

Dans ce rapide didacticiel, nous avons expliqué quand et comment utiliser le mot clé strictfp en Java.

Comme d'habitude, tous les exemples de code présentés sont disponibles sur GitHub.