gpt4 book ai didi

floating-point - Ada:常量声明

转载 作者:行者123 更新时间:2023-12-02 02:32:37 25 4
gpt4 key购买 nike

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

 Pi: constant Float := 3.1415926536

Pi: constant := 3.1415926536

第二个声明据说被解释为,我引用:“具有适当范围的定点类型的任何 float ”。我的问题是说一个人正在使用 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 类型计算中也相关,编译器将仅提供所需数量的精度数字。

非常感谢...

最佳答案

Number Declarations比如

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

有时称为命名数字。这样的数字是universal “因为在类中需要某些特定类型的地方是可以接受的(请参阅 8.6)。”

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

在相关说明中,您可能会喜欢这个 Ada binding到 GNU GMP 和 MPFR 库。

附录:该绑定(bind)允许使用来自 Ada 的 GNU 库,如本 example 所示.

关于floating-point - Ada:常量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com