strictfp

2374 vistas

Esta palabra clave, que es una abreviación de Strict floating point, se aplica como un modificador de acceso. O más sencillamente, lo usamos de la misma manera que las palabras clave public o synchronized pero con algunas restricciones: strictfp se aplica como modificadores de clase, de interfaces o de métodos de una clase y en alguna ocasión, al constructor o a métodos de una interfaz.
La entidad afectada se la denomina FP-strict.

Los efectos:
Como su nombre indeca, strictfp actua sobre las operaciones en coma flotante, es decir, sobre los tipos primitivos double y float.

Java efectua los cálculos garantizando una prioridad de la izquierda hacia la derecha.



java
  1. /** clase FP-strict */
  2. public strictfp class FPDemo {
  3.         public static void main(String[] args) {
  4.                 double d = 8e+307;
  5.                 /** muestra 4 * d /2 es decir 2 * d */
  6.                 System.out.println(4 * d / 2);
  7.                 /** muestra 2 * d */
  8.                 System.out.println(2 * d);
  9.         }
  10. }



Matemáticamente las dos expresiones son idénticas, pero desde dentro de un lenguaje, eso es otra cosa. Java pone un paréntesis: (4*d)/2, y en nuestro caso, (4*d) produce un número infinito. Por contra, la segunda expresión da el resultado esperado.