Java
浮動小数点

strictfpの使い方

More than 1 year has passed since last update.

strictfpとは

strictfp(ストリクトエフピー)とは、厳密浮動少数修飾子とも言い、プラットフォームに依存しない計算ができるようになる予約語。
doubleやfloatは、厳密な計算ができない。そのため誤差が生まれる。
その誤差は32bit(x86)や64bitによって違う。
その計算誤差の差異を同じにするためにこれが用いられることがある。
(自分は間違えていたが厳密な計算が出来ないのは同じ)
しかし、最近はこれを使うことは少ない。
理由はx86も拡張命令により64ビット浮動小数点演算ができるため、strictfpを付けても動作は変わらないから。

使い方

public class StrictFP{
  strictfp public static void strictfpTest(){//メソッドの最初につける
    double db1=0.01;
    double db2=0.2;
    System.out.println(db1*db2);
  }
}
strictfp class StrictFPClass{//クラスにも指定可能
  public static void strictfpTest(){
    double money=100;
    double db1=1.08;
    System.out.println(db1/db2);
  }
}

利点

  • プラットフォームに依存しない動作になる

欠点

  • メモリを余計食う

まとめ

  • strictfpを使うとdoubleなどを32,64bitどっちを使っても誤差が出ない。
  • クラスやメソッドの最初につけることが出来る
  • その代わりメモリを余計食う

参考

とほほのJava入門