我一直在做一些阅读,而且我很难理解如何解释一些数字x"。 即。
type something is digits 6
我得到它的6位数的精度,但我想我混淆了什么是这意味着什么。
1)Y.XXXXXX(6X' s),
2)XXX.XXX(任意数字的数字,总是其中6个数字计算尾数的前后)
...
我只是试图理解数字6(或数字n更通用)的范围是什么,是否有一个公式我可以简单地插入以确定我的范围是什么类型的是一些数字?
答案 0 :(得分:7)
使用digits
声明的类型是浮点类型,类似于Float
或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
和digits 6
声明的两种类型可能具有完全相同的表示和精度。
理解短语“不完全”需要理解浮点数远远超出单个问题的范围,但如果你熟悉其他语言的浮点数,它就是相同的一般想法。
如果您想要了解浮点是什么以及它是如何工作的,那么Wikipedia Article也不错。更高级的处理方法是David Goldberg的经典论文“每个计算机科学家应该知道的关于浮点算术的内容”,可用here作为网页,here作为PDF。