はじめまして!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() { //以下省略~ } }
まとめ
- 誤差の誤差をなくす修飾子
- 浮動小数点演算の誤差をなくすことはできない
- 現在ではあまり使われていない
- クラスとメソッドにつけることができる