阅读此http://en.wikibooks.org/wiki/Ada_Programming/Types/delta
让我想知道delta
的限制值是多少。
例如
delta 127 range 0..1_000_000;
需要一个字节来保存delta值。
但是
delta 0.0000000001 range 0..1;
需要更多字节,对吧?
delta有限制吗?当然,我们不能无限期地继续减少增量?
在上面的链接中说
如果编译器接受您的定点类型定义,则它保证该类型表示的值至少具有指定(或更好)的准确度。如果编译器不支持类型定义(例如由于硬件有限),则会导致编译时错误。
答案 0 :(得分:3)
编译后的代码不会在任何地方保存Delta
值;该类型的存储值已缩放,因此所需大小对应于范围除以Small
(请记住,如果Delta
不是2的幂,则需要指定Small
与Delta
)相同。
对于GNAT,事实证明,Delta
支持的最小值,以及该类型对象的最大Size
:在Mac OS X(Intel)上,
Small_Delta : constant := 2.0 ** (-127);
Small_Bound : constant := 2.0 ** (-64);
type T1 is delta Small_Delta range -Small_Bound .. Small_Bound;
失败
"T1'Small" too small, minimum allowed is 2.0**(-80)
和
Larger_Delta : constant := 2.0 ** (-64);
Larger_Bound : constant := 2.0;
type T2 is delta Larger_Delta range -Larger_Bound .. Larger_Bound;
失败
size required (67) for type "T2" too large, maximum allowed is 64
(我不确定为什么67,而不是65!)