7

私はAdaを初めて使用し、倍精度型を提供するかどうかを確認しようとしていました。フロートがあり、

Put( Integer'Image( Float'digits ) );

私のマシンでは6の値が返されますが、これは数値計算には不十分です。

AdaにはCのようにdouble型とlongdouble型がありますか?

どうもありがとう...

4

2 に答える 2

7

それよりも少し複雑です。

コンパイラがサポートしなければならない唯一の事前定義された浮動小数点型はですFloat。コンパイラはオプションでとをサポートする場合がShort_FloatありますLong_Float。コンパイラのドキュメントの付録Fを調べて、サポートされているものを確認できるはずです。

実際には、コンパイラはほぼ確実Floatに32ビットIEEE浮動小数点数およびLong_Float64ビットとして定義します。floatCは、 andでもこのように機能することに注意してくださいdouble。Cは実際にはそれらのサイズを定義していません。

絶対に証明書の精度が必要な場合(たとえば、IEEE 64ビットを使用する必要のある外部のものとデータを共有している場合)、おそらくその精度で独自のfloatタイプを定義する必要があります。これにより、コードを移動先のプラットフォームやコンパイラに移植できるようになるか、問題を修正できるようにコンパイラエラーが発生するようになります。

于 2010-04-20T19:52:10.867 に答える
6

任意のサイズのフロートを作成できます。長い間、それは次のようになります。

type My_Long_Float is digits 11;

ウィキブックスは、このようなものの良いリファレンスです。

于 2010-04-20T20:00:29.003 に答える