strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时, Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了 strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。以上内容为我在CSDN上找到的,可是我用过不好使。!!

解决方案 »

  1.   

    java中double是64位的  但是有些平台的处理器(比如INTEL)是采用80位的寄存器  
    这样在各个平台上 计算出来的结果就可能有误差 (中间计算过程对第64位后数据丢失造成误差)
    因为跨平台的要求 所以JAVA最初规  JAVA中的计算的中间步骤都要求截尾  以保证各个平台的一致性  但是这个缺受到了数学界的反对  说这样不但影响性能 并且可能会导致溢出 
    所以JAVA在默认的情况下  不进行截尾 
    如果加上strictfp关键字的话 则要求在计算过程中  每一步都进行截尾  以保证一致性这个关键字除非对数字特别敏感 否则用不到