3

私は Norman Cohen の Ada 95 本を読んでいて、129 ページには一定の宣言があります。

 Pi: constant Float := 3.1415926536

Pi: constant := 3.1415926536

2 番目の宣言は、「適切な範囲の固定小数点型の任意の浮動小数点」として解釈されると言われています。私の質問は、Long_Float の精度で作業しているとします。たとえば、2*PI などの定数を宣言するには、次のように具体的に宣言する必要があります。

Two_Pi : CONSTANT Long_Float := 2.0 * 3.1415926536

またはさらに良い:

Two_Pi: CONSTANT Long_Float :=  2.0 * Ada.Numerics.Pi;

(小数点以下の桁数を増やすための 2 番目の宣言) ?

だろう

Two_Pi : CONSTANT := 2.0 * 3.1415926536   

またはまだ良い

Two_Pi: CONSTANT  :=  2.0 * Ada.Numerics.Pi;

たとえば、Long_Float計算でTwo_Piを使用しているかどうかをAdaコンパイラが認識できるように、本が主張するのと同じくらい優れていると、コンパイラは必要な精度の桁数を提供しますか? Pi 値 3.1415926536 は Long_Float 型ではないため (精度の桁数が少ないため)、最後の宣言、つまり

Two_Pi: CONSTANT  :=  2.0 * Ada.Numerics.Pi;

Long_Float 計算で Two_Pi が必要な場合は、これで十分です。私は正しく理解していますか?同様の理解で、

Two_Pi: CONSTANT  :=  2.0 * Ada.Numerics.Pi;

Float 型の計算にも関連し、コンパイラは必要な精度の桁数のみを提供します。

どうもありがとう...

4

1 に答える 1

3

Number Declarationsそのような

Two_Pi : constant := 2.0 * Ada.Numerics.Pi;

名前付き番号と呼ばれることもあります。このような数は、「クラス内の特定のタイプが予想される場合に受け入れられるという点で、普遍的です( 8.6を参照)」。

補遺:このような数値は普遍的であるため、「対応するクラスの任意のタイプのプリミティブサブプログラムでオペランドとして使用できます」。たとえば、、、またはuniversal_realから派生した任意のタイプTwo_Piを掛けることができます。FloatLong_Float

関連するメモとして、このAdaをGNUGMPおよびMPFRライブラリにバインドすることをお勧めします。

補遺:このに示すように、バインディングにより、AdaのGNUライブラリを使用できます。

于 2010-07-05T13:27:02.437 に答える