java中少见的关键字-strictfp

strictfp也就是所谓的FP-strict,可以用来修饰类,接口和方法。

当用来修饰类和接口时,类和接口内部所有的float和double表达式都是FP-strict的。

FP-strcit表示必须使用严格的浮点计算来产生理想的结果,也就是要遵循IEEE标准。

其实主要是为了保证相同的计算,每次都能有相同的结果,即使换个虚拟机,计算结果仍然一致,也可以看成是保证了java的可移植性。

比如,double r = a*b/c这么一个计算式,是先执行a*b操作,此时会产生一个中间结果,按理说这个最多存储一个64位的double类型,

但有些处理器,提供了80位的寄存器,能存储的中间结果精度更高,再拿中间结果接着做下面的计算,最终的结果截取64位,所产生的结果精度也更高。

这就导致了同一个计算式,有可能在不同的处理器上,产生的结果不一致。而采用strictfp修饰的话,表示都严格按照IEEE标准,就能避免这个问题。

posted @ 2017-06-21 10:33  boogieman  阅读(772)  评论(0编辑  收藏  举报