3

我正在阅读 Norman Cohen 的 Ada 95 书,在第 129 页我们有不断的声明:

 Pi: constant Float := 3.1415926536

Pi: constant := 3.1415926536

据说第二个声明被解释为,我引用:“具有适当范围的定点类型的任何浮点”。我的问题是说一个人正在使用 Long_Float 精度,然后例如声明一个常数说 2*PI 做一个人必须特别声明像

Two_Pi : CONSTANT Long_Float := 2.0 * 3.1415926536

或者更好:

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

(第二个声明利用小数点后更多的数字)?

Two_Pi : CONSTANT := 2.0 * 3.1415926536   

或者更好

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

与本书声称的一样好,以便 Ada 编译器知道,例如,如果我在 Long_Float 计算中使用 Two_Pi,那么编译器会提供所需的精度位数吗?由于 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;

在浮点类型计算中也将相关,编译器将仅提供所需的精度位数。

非常感谢...

4

1 回答 1

3

Number Declarations

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

有时称为命名数字。这样的数字是通用的,“因为它在类中的某些特定类型是可以接受的(见8.6 节)。”

附录:因为这些数字是通用的,所以它们可以“与相应类中任何类型的原始子程序一起用作操作数”。例如,Two_Pi可以乘以Float,或从universal_realLong_Float派生的任何类型。

在相关的说明中,您可能喜欢此 Ada绑定到 GNU GMP 和 MPFR 库。

附录:绑定允许使用来自 Ada 的 GNU 库,如本例所示

于 2010-07-05T13:27:02.437 回答