Ada Digits混乱

ona*_*000 4 precision ada digits

我一直在做一些阅读,我很难理解如何解释一些"数字x".IE

type something is digits 6
Run Code Online (Sandbox Code Playgroud)

我知道这是6位数的精度,但我想我混淆了什么是这意味着什么.

1)Y.XXXXXX(6X),

2)XXX.XXX(任意数字的数字,总是其中6个数字计算尾数的前后)

...

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

Kei*_*son 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;
Run Code Online (Sandbox Code Playgroud)

实际上,给定系统上通常只有2或3个基础浮点类型.编译器将选择适当的一个作为声明的基础类型.在实践中,声明了两种类型,digits 2并且digits 6可能具有完全相同的表示和精度.

理解短语"不完全 "需要理解浮点数远远超出单个问题的范围,但如果你熟悉其他语言的浮点数,那就是一般的想法.

如果您想要了解浮点是什么以及它是如何工作的,那么维基百科文章也不错.一个更先进的治疗是大卫·戈德堡的经典论文"什么每台计算机科学家应该知道关于浮点运算",可在这里作为一个网页,并在这里为PDF.

  • @ onaclov2000:当然.您可能想阅读[本文](http://en.wikipedia.org/wiki/Floating_point).您最终可能*想要阅读Goldberg的"每个计算机科学家应该知道的关于浮点运算的内容". (4认同)