私はいつもstrictfpを読んで浮動小数点計算をIEEE-754標準に制限していますが、なぜこの標準に従って計算の結果を制限する必要があるのか読んでいないのですか?strictfpが存在するのはなぜですか?
答えて
james goslingと彼のチームによって開発されたJavaでは、プラットフォームの独立性が優先されました。彼らは、異なったオペレーティングシステムを実行していても、異なる命令セットを持つマシンで全く同じように動作するように、オーク(Java)を非常に良くしたいと考えました。しかし、浮動小数点演算の問題、すなわち浮動小数点またはdoubleの計算に至ったとき、演算結果は精度によって異なるマシン(32/64ビットプロセッサアーキテクチャ)で異なります。一部のプロセッサは、その時間のペンティアムプロセッサのような効率(高速計算)を目標に構築されていたが、残りはその時代の古いプロセッサのような精度(正確な結果)を対象としていた。
高速演算のためにプロセッサをスタブルリングすると、精度値は切り上げられましたが、他のプロセッサは処理されなかったため、結果はわずかに異なりました。そしてこの違いは、WORAのjavaスローガンに反していました。したがって、Javaの人々はstrictfpという修飾子を使って浮動小数点演算の結果をIEEE-754標準に制限しました。
Strictfpを使用すると、すべてのプラットフォームで浮動小数点計算と同じ結果が得られます。 strictfpを使用しない場合、JVMの実装では、使用可能な場合は余分な精度を自由に使用できます。これは、strictfpを指定しないと、JVMとJITコンパイラは、必要なときに私たちの浮動小数点計算を計算するためのライセンスを持っているということです。速度の面では、計算機をプロセッサに委託する可能性が最も高いでしょう。しかしstrictfpをとすると、実際にはJVMが計算を行い、どのマシンでも浮動小数点演算で同じ結果が得られることを意味するIEEE 754算術標準に準拠している必要があります。
- 1. -ms-overflow-styleが存在するのはなぜですか?
- 2. dynamic_castが存在するのはなぜですか?
- 3. ActivePythonが存在するのはなぜですか?
- 4. iOSにデリゲートが存在するのはなぜですか?
- 5. EXCEPTがT-SQLに存在するのはなぜですか?
- 6. なぜNull値がPHPに存在するはずですか?
- 7. QByteArrayにdeleteLaterが存在しないのはなぜですか?
- 8. Linuxにウイルスが存在しないのはなぜですか?
- 9. なぜ `DatabaseGeneratedOption.None`が存在しますか?
- 10. なぜasyncキーワードが存在するのですか
- 11. なぜゾンビプロセスが存在するのですか?
- 12. なぜbool.TrueStringとbool.FalseStringが存在するのですか?
- 13. なぜ「ポップ」メソッドが存在するのですか?
- 14. Mingwはなぜ存在するのですか?
- 15. なぜConsole.Out.WriteLineは存在するのですか?
- 16. DirectoryInfo.Extension - これはなぜ存在するのですか?
- 17. これはなぜ存在するのですか?
- 18. Makefileが存在しないソースファイルを作成するのはなぜですか?
- 19. なぜクラスセットがスカラーに存在しないのですか?
- 20. なぜオブジェクトがChrome DevToolsに存在しないのですか?
- 21. なぜsystem.floatが.netに存在しないのですか?
- 22. なぜParcel.writeBoolean(boolean)が存在しないのですか?
- 23. なぜ入力が存在しないのですか?インサイド
- 24. なぜRは存在しないのですか?
- 25. これらの存在検証が失敗するのはなぜですか?
- 26. kafka-logディレクトリに.indexファイルが存在するのはなぜですか?
- 27. アンチエントロピープロトコルに「エントロピー」という単語が存在するのはなぜですか?
- 28. ECMAScript標準でObject.setPrototypeOf(...)が存在しないのはなぜですか?
- 29. .NET 4.5にCallerTypeNameAttributeが存在しないのはなぜですか? .NET 4.5で
- 30. なぜC++ 17ではstd :: future ::が存在しないのですか?
クラス、インターフェイス、メソッド定義で 'strictfp'を使うと、浮動小数点計算がすべてのプラットフォームで同じになるようにします。 – Omoro
'strictfp'は振る舞いを厳密にし、再現性がありポータブルなものにします。いつポータブルFP算術が必要でしょうか?私はこれを必要とする個人的な経験はありませんが、ゲームは1つの可能なユースケースであると聞いています(多くの人が代わりに固定小数点演算を使用しています)。 –