Wikipedia a fait un bon article sur ce sujet ici, avec un lien vers la spécification de Java.
En lisant entre les lignes, l'implication est que si vous ne spécifiez strictfp
, puis la JVM et le compilateur JIT ont permis de calculer vos calculs en virgule flottante cependant qu'ils veulent. Dans l'intérêt de la vitesse, ils seront plus susceptibles de déléguer le calcul de votre processeur. Avec strictfp
sur, les calculs doivent être conformes à la norme IEEE 754 arithmétique des normes qui, dans la pratique, signifie probablement que la JVM va faire le calcul.
Alors, pourquoi voudriez-vous d'utiliser strictfp
? Un scénario que je peux voir, c'est dans une application distribuée (ou jeu multijoueur), où tous les calculs en virgule flottante doivent être déterministe, quel que soit le matériel sous-jacent ou de l'UC est. Quel est le trade-off? Les plus susceptibles de temps d'exécution.