首页 文章

阿达:不断宣言

提问于
浏览
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;

在Float类型计算中也是相关的,并且编译器将仅提供所需数量的精度数字 .

非常感谢...

1 回答

  • 2

    Number Declarations

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

    有时被称为命名数字 . 这样的数字是universal“因为在预期 class 中某些特定类型的地方是可以接受的(参见8.6) . ”

    附录:因为这些数字是universal,所以它们可以"be used as operands with the primitive subprograms of any type in the corresponding class."例如, Two_Pi 可以乘以 FloatLong_Float 或从universal_real派生的任何类型 .

    在相关的说明中,您可能希望将此Ada binding添加到GNU GMP和MPFR库中 .

    附录:绑定允许人们使用Ada的GNU库,如example所示 .

相关问题