1. ホーム

[解決済み】javaで "strictfp "キーワードはいつ使うべきですか?

2022-04-02 10:39:13

質問

これが何をするものなのか調べてみたのですが、実際に strictfp というキーワードをJavaで使うことはできますか?実際に使い道を見つけた方はいらっしゃいますか?

すべての浮動小数点演算にこれを適用すると、何か副作用があるのでしょうか?

どのように解決するのですか?

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

JLSより :

FP-strict式内では、すべての 中間値は フロート値セットまたはダブル値 値セットであることを意味し、その結果 すべてのFP-strict式は IEEE754の算術演算で予測されるもの で表現されたオペランドに対して、シングル とdoubleの形式があります。その中で FPストリクトでない式では を使用することができます。 実装では、拡張された を表現するための指数範囲 中間的な結果であり、正味の効果は 大雑把に言うと の計算が正しいかもしれません。 のような状況で フロート値セットまたはダブル値セットを使用する 値セットでオーバーフローまたは アンダーフローが発生します。

言い換えれば、それは、以下のことを確認することです。 ライトワンス・ラン・エニウェア 実際の意味は どこでも書き込み一回で均等に間違った結果を得る .

strictfpがあれば、結果はポータブルになり、なければ正確なものになる可能性が高くなります。