quadruple
を使用せずにdouble
の精度で16桁以上を取得できますか?可能であれば、コンパイラなどに依存しますか?誰かが彼がdouble
の精度で作業していて、22桁の精度を持っていたと知っていたからです。倍精度の拡張
倍精度の拡張
答えて
データ型double precision
はFortran 77に由来し、その型の唯一の要件はreal
よりも精度が高いことです。もう使用しないでください。
Fortran 90/95以降では、少なくとも2つの実数のサイズがサポートされています。精度は、kind
パラメータによって決定され、その値はコンパイラによって異なります。あなたは
real(kind=long_double) :: a, b
としてあなたの変数を宣言することができ、その後
integer, parameter :: long_double = SELECTED_REAL_KIND(22)
を:
real(kind=8) :: a, b
は精度を定義する移植可能な方法を持っているために、あなたが使用することによって、特定の精度を可能にkind
値を得ることができます
しかし、あなたのコンパイラがその精度をサポートするかどうかはわかりません。その場合、SELECTED_REAL_KIND
関数は負の数を返します。
は、最初の回答の状態としてもthis post
を参照して、最もポータブルな方法は、数の精度を指定することで本来の機能を使用することです。言語の設計コンセプトは、計算に必要な精度を求めて要求し、コンパイラがその精度以上を提供することです。たとえば、微分方程式の解が小数点以下11桁で安定していると計算すると、この値を要求するとコンパイラは要件を満たす最適な型を提供します。これは、ほとんどのプログラマにとっては外国のアプローチであり、ハードウェアが必要とするものよりもハードウェアによって提供されるものが何であるかを考えるのに慣れており、数値アナリストはほとんどいないので、あまり簡単ではないかもしれません。
特定のコンパイラとハードウェアにSELECTED_REAL_KIND組み込み関数を最適化して最適化したい場合は、実験を行いたい場合があります。いくつかの組み合わせはソフトウェアで四重極精度を提供しますが、これは遅くなります。倍精度と10バイトの拡張精度を持つコンパイラは、selected_real_kind(17)を使用してより長い型を提供します。倍精度と四倍精度で10バイトの拡張精度ではないコンパイラは、selected_real_kind(17)またはselected_real_kind(32)で四重極精度を提供します。 (私は、10バイトの拡張と四重極の両方をサポートするコンパイラは認識していません)。四重極精度のないコンパイラはselected_real_kind(32)に対して-1を返します。
- 1. 拡張倍精度浮動小数点ライブラリC/C++
- 2. 倍精度
- 3. Javaの倍精度
- 4. SSIS倍精度prob
- 5. 拡張ツールキットWPF DateTimePicker秒精度
- 6. iPhone/iPad倍精度数学
- 7. 倍精度乱数列
- 8. C#DateTime:倍精度浮動小数点型時間の倍精度化
- 9. 機能CORR(倍精度、倍精度)が存在しない - のPostgresSQL
- 10. C - IEEE 754の倍精度と単精度の格納方法
- 11. IEEEの単精度と倍精度で表される総数
- 12. Javaの単精度/倍精度は何ですか?
- 13. スウィフトで倍精度以上の精度を実現
- 14. QString :: toDouble()が誤った精度で倍精度を返す
- 15. 倍精度:大きな数の乗算
- 16. ここNSDateと倍精度の問題
- 17. ハスケルの最小/最大倍精度
- 18. 倍精度のprintf丸め動作
- 19. NSNumberFormatter iOSの大きな倍精度値
- 20. (倍精度/オブジェクトの一意性)
- 21. 倍精度 - MS Visual C++ 2005 Vs Matlab
- 22. 最低の共通倍数がCで倍精度になる
- 23. ビジュアルスタジオで64ビットの倍精度をバイト配列形式の80ビット倍精度に変換する
- 24. 拡張精度FPUのない数値落とし穴
- 25. C++で整数と倍精度の書式設定の行列
- 26. Javaの2つの倍精度値を比較するには?
- 27. IEEE 754倍精度のMIPS CからJavaへの変換
- 28. MVC3エディターの倍精度浮動小数点型の表記
- 29. bash:ファイルテスト式の評価の倍精度vs単一括弧
- 30. 倍精度に影響する小数点以下の桁数
しかし、あなたは '整数 'を書きました。 'integer'だけが' double 'ではなく22桁を持つことができますか? – Shibli
'long_double'は整数であり、' real'変数 'a'と' b'の種別を少なくとも精度を持つように指定するために使用されます。22 – steabert
@Shibli単精度および倍精度浮動小数点数は、ポータブルな方法でシステムに浮動小数点数を返しこのためには 'integer、parameter :: sp = kind(1.e0)'と 'integer、parameter :: dp = kind(1.d0)'を使用できます。次に、倍精度浮動小数点を 'real(kind = dp):: double'として宣言できます。 – Chris