質問

ごきげんよう、トメ子です、重複します。していきたいと思っていい例です。では誰でもできるのでは説明できない、かろうか。

リンクを複製ポスト: されることがあります。にstrictfp"というキーワードjava?

役に立ちましたか?

解決

もgirinieの答え尽きると私は考えていくものだったとえば..

例えばゲームでhighscore応募作品が、後にサーバー検証します。一つの方法を検証するためにスコアは、お客様に送信さkeypresses(およびそのタイムスタンプ)はサーバー通信を行います。理想的には、サーバーしてい遊びを通して同じゲームを得るのと同じ。

それでは、あなたのゲームは物理できる変更の結果、ゲームなど爆発投ランダムデブリが、あなたを傷つけた場合でhits).

の物理とゲーム性が異なる可能性があるためですのでサーバであっても、少り、クライアント(例えば、変換する整数型のための衝突検出で四捨五入 down の代わりに ).の先端事例のように、き状況はお客様ゲーム ない ヒットによるデブリからの爆発が、サーバーゲーム -していけば、相違点、誤を無効にするhighscore提出

ながら strictfp あなたの銀弾は、その長い道のりで堂々一部の整合性の再生命の広がります。

他のヒント

これが何であるかです Java言語仕様 言う:

FPストリック式内では、すべての中間値はフロート値セットの要素または二重値セットでなければなりません。これは、すべてのFP強制式の結果が、単一形式と二重形式を使用して表されるオペランドのIEEE 754算術によって予測されたものでなければならないことを意味します。 。 FP厳格ではない式の中で、実装が中間結果を表すために拡張指数範囲を使用するためにある程度の余裕が与えられます。大まかに言えば、正味の効果は、計算がフロート値セットまたは二重値セットを排他的に使用する可能性がある状況で「正解」を生成する可能性があるということです。

それが意味することはこれです:浮動小数点算術(すなわち、 floatdouble タイプ)in javaは、 IEEE 754 標準。これには、FP数値を正確に表現する方法が表示されます。問題は、最新のCPUが内部的にFP算術を使用していることです。これは、中間結果の標準を順守しないFP算術です。これは、実際にはより速く、より正確な結果が得られるため、一般的に問題ではありません。しかし、プログラムが実行されるハードウェアに応じてわずかに異なる結果を生成することを意味する可能性があります。これは、Javaのプラットフォーム独立の基本的な約束に反しています。

strictfp キーワードを使用すると、この約束が維持され、プログラムがどこで実行されてもまったく同じ結果が得られるようにしますが、これは、FP計算を順守するために追加の努力を費やさなければならないハードウェアのパフォーマンスを低下させるコストで提供されます。すべての中間結果についてIEEE754。

ほとんどの場合、あなたはプラットフォーム間で同一の結果を保証するのではなく、より良いパフォーマンスを持っているでしょう、そしてそれが理由です strictfp 動作はオプションです。実はそうでした 作る JVMの実装者がJVA 1.4でオプションで、ほとんどの場合、そのような厳密な順守に利点がなかった場合、CPUに仕様を順守するために追加の作業を行わなければならないことに気付いた後。

Strictfpその非常に特別な。

で見てみましょう 宇宙機関の例.

書かれたコードは非常に具体的な科学番号を使用していますが、この数字は マルチ配置小数.

これらは デシマル値は軌跡に影響します 摩擦、重力、熱、湿気、受信した日光、発生した電気、複数の重力体、速度、煙道効率などの私の定数によって影響される宇宙船パスの

主なポイントは、データが船を追跡するために評価のために送信されるとき、それは 異なるプラットフォームで同じ値を返す必要があります そうでなければ、小数値がわずかに異なるデータを受け取ります。

しかし、これは船が軌道から迂回するようになるため、小さな違いとは見なされません。 計算は、さまざまなプラットフォームでも非常に具体的かつ一貫している必要があります。スタンダーと正確性を備えている必要があります。

この要件については、JavaにStrictFPがあります。

あなたはそれを実証するプログラムを望んでいます、 小さなプログラムでこれを正確に表示するのは難しい.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top