我一直在阅读,我很难理解如何解释“数字 x”的东西。IE
type something is digits 6
我知道它是 6 位数的精度,但我想我搞混的是这意味着什么。
1) Y.XXXXXX (6X),
2) XXX.XXX(任意位数,在尾数前后都是 6 个)
...
我只是想了解数字 6 的范围(或更通用的数字 n),是否有一个公式我可以简单地插入以确定我的范围在某个数字的类型上?
声明的类型digits
是浮点类型,类似于Float
or Long_Float
。
这6
是“浮点类型所需的有效十进制数字的最小数量”。例如,以下所有内容将被合理准确地表示(但不完全):
type My_Real is digits 6;
X: My_Real := 1.23456;
Y: My_Real := 12345.6;
Z: My_Real := 1.23456E7;
实际上,给定系统上通常只有 2 或 3 个底层浮点类型。编译器会选择一个合适的作为你声明的底层类型。实际上,用digits 2
and声明的两种类型digits 6
可能具有完全相同的表示和精度。
理解“不完全”这个短语需要对浮点的理解,这远远超出了单个问题的范围,但如果你熟悉其他语言中的浮点,这是相同的一般概念。
如果您想大致了解浮点是什么以及它是如何工作的,维基百科的文章还不错。更高级的处理方法是 David Goldberg 的经典论文“What Every Computer Scientist Should Know About Floating-Point Arithmetic”,可在此处以网页和PDF 格式获取。