strictfp关键字 标记的代码块必须使用严格的浮点计算运算过程,但这有可能出现溢出。 现今的处理器有一部分是使用80位的浮点寄存器。这些寄存器增加了中间过程的计算精度。Java最初是通过将中间计算进行截断来获得最终结果值,截断计算可能会导致溢出,并且由于截断操作需要消耗时间,所以速度要比精确计算慢。 虚拟机设计者通过改进,在常规浮点计算中允许对中间计算结果采用扩展的精度。
如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp,但这更有可能产生溢出。