Pensamientos ágiles
Operaciones aritméticas y strictfp
Agosto 30th, 2007 - [Enlace local]
Una de las palabras reservadas en Java que seguramente sólo verás cuando te estás leyendo un libro básico sobre Java es strictfp. La lees, y te olvidas. Nadie te va a pedir que la utilices mientras estudias y probablemente nunca te la encuentres en el trabajo.
Sin embargo hay ocasiones en las que te encuentras que dos operaciones aritméticas no dan el mismo resultado de repente en JRockit sobre Sun Solaris que en la VM de Sun sobre Windows. mmm ¿qué diablos pasa?
Básicamente, hasta Java 1.2 las operaciones en coma flotante eran predecibles. Todas se realizaban siguiendo el estándar definido por el IEEE y los resultados eran los mismos bajo cualquier implementación de Java, bajo cualquier plataforma, y compatibles con los resultados de cualquier otro lenguaje que siguiese el estándar definido por el IEEE.
La contrapartida a esto era que las operaciones de coma flotante eran muy lentas, ya que se deben forzar una serie de restricciones por ejemplo en cuanto a overflows, y Java no era competitivo. Así que se decidió dejar de forzar la compatibilidad con IEEE para conseguir un aumento de rendimiento, dejando como opcional la compatibilidad. Para forzar que las operaciones sean compatibles con el estándar IEEE se tiene que utilizar la palabra reservada strictfp. En este enlace lo explican muy bien.
» Leer más, comentarios, etc...