2012-04-12 79 views
4

我一直在做一些阅读,并且我很难理解如何解释“数字x”的东西。 I.E.Ada Digits Confusion

type something is digits 6 

我知道它是6位数的精度,但我想我是什么混在一起是什么意思。

1)Y.XXXXXX(6X的),

2)XXX.XXX(任意数量的数字,只是将永远是他们的6计数两者前后尾数)

...

我只是想了解数字6(或数字n更通用)的范围是什么,是否有一个公式,我可以简单地插入以确定我的范围是什么类型是一些数字?

回答

7

digits声明的类型是浮点类型,类似于FloatLong_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 2digits 6声明的两种类型可能具有完全相同的表示和精度。

理解短语“不是”确切地说是“需要理解超出单个问题范围的浮点数,但如果您熟悉其他语言中的浮点数,则这是相同的总体思路。

如果你想大致了解什么是浮点数以及它是如何工作的,Wikipedia Article并不差。 David Goldberg的经典论文“每个计算机科学家关于浮点运算应该知道什么”的更为先进的处理方法是,可以将here作为网页,here作为PDF。

+0

是否有可能得到一个W:My_Real:= 123456.0? – onaclov2000 2012-04-12 23:13:10

+4

@ onaclov2000:当然。您可能想阅读[本文](http://en.wikipedia.org/wiki/Floating_point)。您最终可能会希望阅读Goldberg的“每位计算机科学家应了解的浮点算术知识”。 – 2012-04-12 23:25:18