質問

ったようなものは誰にでも実際の使用の strictfp キーワードJava?で実際に見つかりを使用。

いませんので、あらかじめご側の影響だけで全ての浮動小数点実現されるのでしょう。

役に立ちましたか?

解決

strictfpのは、あなたがすべてのプラットフォーム上で、あなたの浮動小数点計算から、まったく同じ結果を得ることを保証します。あなたがstrictfpのを使用しない場合は、JVMの実装が可能な場合、余分な精度を自由に使用できます。

JLSするから:

  

FP-厳密式の中で、すべての   中間値は、要素でなければなりません   設定されたfloat値またはダブルの   その結果を暗示値セット、   すべてのFP厳密式である必要があります   IEEE 754算術演算によって予測されるもの   オペランドに対して単一使って表現   ダブルフォーマット。以内   FP厳密でない表現、いくつかの   余裕がために付与されています   拡張を使用するための実装   表現する指数範囲   中間結果。正味の効果、   大まかに言えば、そのAです   計算は、「正しいが生じる可能性があります   排他的な状況での答え」   設定またはダブルfloat値の使用   値セットがオーバーフローする可能性がありますか   アンダーフローます。

言い換えれば、それは確かにのライトワンス・ラン・どこでもあることの実際が追記型-GET-同様に、間違った結果-どこのことをいう。<作りについてです/ P>

strictfpの検索結果ではなくて、彼らが正確である可能性が高い、移植性があります。

他のヒント

ですべての始まりの物語

がjava開発によるJames Goslingヘルベルト-は、こちらをご参照くださいしています。彼らはこの狂いもの心という platform独立性.いることが難しくなってき オーク(Java) いることを行っ同じマシンの異なる命令セット、ランニングも別のシステムです。でも、が問題であった小数点数としても知られる浮動小数点およびダブルプログラミング言語まで一部の機構築に向の効率化をもたらされたこ標ます。その後(より正確に)の機械サイズの浮動小数点として80ビット前者はより効率-高速の機械または64ビットが表示されます。でも、これに反対したのがコアで作ってはどうかという発想プラットフォーム非依存の言語です。また、これが失精度のデータがコードは一部の機(ダブルまたは64ビットおよび他の種類の機械(有する二重の80ビットサイズ)。

アップサイズこまで容認できるものに押しきることはうれしい。いたってのコンセプトstrictfpる 厳しい浮動小数点.ご利用の場合このキーワードクラス/機能し、その浮動小数点を兼ねて一貫したサイズ載機です。すなわち32/64-bitです。

こちらは複数の参考文献:

  • 使用strictfp (日本国土開発テック先)
  • jGuru: うにstrictfp修飾子ですか?するおそれがある場合は私の考えではどうなりますか?

    基本的には、その突き詰めかどうかは、ご注の結果は浮動小数点表現をコードしてイノベーションを再構築するには予測可能であ例えば、あなたが必要に答えるコードが利用浮動小数点の値と一致することを横マルチプラットフォームを使用し strictfp.

  • strictfp-Java用語集

    浮動小数点ハードウェア計算をより精密、より多様な価値をJavaの仕様があります。この混乱の場合一部のプラットフォームしたり精密なります。をご利用の場合 strictfp 修飾方法またはクラスのコンパイラのコードを生成することへの徹底を図っておりJavaスペックのための同様な結果がすべてのプラットフォーム.なし strictfp, であることには若干のlaxerわけではないことがわかった甘さとして利用ガビットのPentiumを80ビットの精度。

  • 最後に、実際のJava言語仕様 §15.4FP-厳しい表情:

    内FP-厳しい表現、すべての中間の値の要素をfloat値に設定したdouble値に設定することを示唆結果のすべてのFP-厳しい表現する必要の予測によるIEEE754算にオペランドで表される利用シングルとダブルフォーマット内で発現しないFP-厳しくなり、ゆとりある広さとの交付を受けられる実装の使用拡張指数範囲を代表する中間結果は、ものすごく大雑把にいえば、まさに計算することが"正しい答え"の場合専用のfloat値に設定したdouble値に設定がオーバーフローまたは伏流.

んな人が利用するものです。

他の回答は、中間浮動小数点結果は、IEEE仕様に準拠させるに述べたように。特に、x86プロセッサは、IEEE仕様は異なる精度で中間結果を格納することができます。 JITは、特定の計算を最適化する場合、状況はより複雑になります。順序命令はわずかに異なる丸めが生じるたびに異なる可能性があります。

非常にプロセッサとJIT依存である可能性はstrictfpによって発生するオーバーヘッド。 SSE2 の上のこのWikipediaの記事は、問題がいくつかの洞察を持っているようです。 だから、JITが、strictfpとしては、任意のオーバーヘッドを持っていないだろうと思われる計算を実行するためのSSE命令を生成することができます。

私の現在のプロジェクトでは、私がstrictfpの使用をいくつかの場所があります。潜在的な宇宙線の画素値から除去する必要がある点があります。いくつかの外部の研究者が前にそれらを同じ画素値と宇宙線を持っている場合、彼らは私たちのソフトウェアと同じ結果の値を取得する必要があります。

  • strictfpは修飾子の制約があり浮動小数点計算してIEEE754.

  • ここで使用できる全クラス"のような公共strictfpクラスStrictFpModifierExample{}"または方法"に公strictfp無効例()".利用する場合にクラス以上のすべての方法に従い、IEEE754、途に使用される場合は、メソッドは、特定の方法に従い、IEEE754.

  • なぜで使われるのか?:::どのプラットフォームによって異なる浮動小数点ハードウェア計算するものより精密、より広い範囲に有効な値はjavaの仕様を必要とする場合を小出力の小plateforms.で確認、同じ出力にかかわらず小plateforms

  • strictfp確実なものとなりますの速度と精度の精度の浮動小数点ます。

  • が不利益を与えることはありませんこのキーワードできる場合に使用してい浮動小数点計算

  • 私の最後の論点は何でしIEEE754短 IEEE754標準を定義し方法の両方の浮動小数点演算、保管浮動小数点値のいずれのシングル(32-bitで使用するJavaのfloat)またはdouble(64ビットに使用するJavaのdoubleという事になります。でいても明らかにしています。規範のための中間体計算のための拡張精密ンポーネント。

strictfpは、キーワードで、クラスやメソッド(決して変数)のための非非アクセス修飾子として使用することができます。 strictfpとしてクラスをマーキングするクラス内の任意のメソッドのコードは、浮動小数点のためにIEEE 754標準規則に準拠することを意味します。

その修正がなければ、方法で使用される浮動小数点は、プラットフォームに依存するように動作することがあります。これであなたのフローティングポイントにかかわらず、JVMが実行されている基盤となるプラットフォームのどのように動作するかを予測することができます。欠点は、基礎となるプラットフォームは、より高い精度をサポートすることができる場合、strictfp方法はそれを利用できないことである。

あなたはstrictfpとしてクラスを宣言していない場合は、

、あなたはまだstrictfpような方法を宣言することで、法・バイ・法に基づきstrictfp動作を得ることができます。

〜SCJPSun®CertifiedプログラマーのJava™のための6 - キャシーシエラ&バート・ベイツ〜

月次の例のように助けを理解するにより明らかJavaにおけるその利用のみ正確な情報の操作例いダブルnum1=10e+102;ダブルnum2=8e+10;result=num1+num2;

        The output will be so long and not precise, becasue it is precissed by the hardware e.g JVM and JIT has the license 
        as long as we dont have specify it Strictfp

Marking it Strictfp will make the result Uniform on every hardware and platform, because its precised value will be same
One scenario I can see is in a distributed application (or multiplayer game) where all floating-point calculations need to 
be deterministic no matter what the underlying hardware or CPU is.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top