naoppyの日記

自分が欲しいなと思った記事を書きます。

Javaの修飾子、strictfpとは?

はじめまして!naoppyです。

初投稿なんですけど、ブログは備忘録として淡々と書いていこうと思います。

 

今回はstrictfpについてです。

strictfpとは?

strictfpとは、Javaの修飾子です。

stricffp修飾子は、32bitや64bitによって浮動小数点演算の誤差が違う計算を、どの環境でも同じ結果にするための演算子です。

簡単に言うと、誤差の誤差を無くす修飾子です。

大切なのは、浮動小数点演算の誤差が無くなるわけではないです。

Javaの設計理念である、"どこでも同じように動く"、という目的のためでしょうが、あまり出番はないです。

僕はこれを厳密計算の為の修飾子で、つけたらBigDecimalを使わなくてもいいのかと期待してました・・・悲しいね。

結局、厳密な少数計算にはBigDecimalクラス

BigDecimal (Java Platform SE 8)

を使う必要がありますね。

コード例

この修飾子はクラス、メソッドに対して付けることができます。

はてブロでのソースコードの貼り方がわからない…

strictfp class Test1 {
    void test() {
    //以下省略~
    }
}

class Test2 {
    strictfp void test() {
    //以下省略~
    }
}

 

まとめ

  •  誤差の誤差をなくす修飾子
  • 浮動小数点演算の誤差をなくすことはできない
  • 現在ではあまり使われていない
  • クラスとメソッドにつけることができる