2012-04-12 11 views
4

Ich habe etwas gelesen, und es fällt mir schwer zu verstehen, wie man etwas interpretiert, das eine "Ziffer x" ist. I.E.Ada Digits Confusion

Ich bekomme, dass es 6 Stellen der Präzision ist, aber ich denke, was hat mich verwechselt, was bedeutet das.

1) Y.XXXXXX (6X Jahre),

2) XXX.XXX (beliebige Anzahl von Ziffern, wird nur immer 6 von ihnen sowohl vorn zu zählen und achtern der Mantisse)

...

Ich versuche nur zu verstehen, was ein Bereich von etwas, das Ziffern 6 ist (oder Ziffern n allgemeiner sein), gibt es eine Formel, die ich einfach anschließen kann, um zu bestimmen, was meine Bereiche auf einem Typ sind einige Ziffern?

Antwort

7

Ein mit digits deklarierter Typ ist ein Gleitkommatyp, ähnlich wie Float oder Long_Float.

Die 6 ist "die minimale Anzahl von signifikanten Dezimalziffern, die für der Gleitkommatyp erforderlich sind". Zum Beispiel sind alle folgenden wird einigermaßen genau dargestellt werden (aber nicht genau):

type My_Real is digits 6; 
X: My_Real := 1.23456; 
Y: My_Real := 12345.6; 
Z: My_Real := 1.23456E7; 

In der Praxis gibt es in der Regel nur 2 oder 3 zugrundeliegenden Gleitkommatypen auf einem bestimmten System. Der Compiler wählt einen geeigneten als den zugrunde liegenden Typ für Ihre Deklaration aus. In der Praxis werden zwei mit digits 2 und digits 6 deklarierte Typen wahrscheinlich genau die gleiche Darstellung und Genauigkeit haben. Der Begriff "nicht genau" erfordert ein Verständnis von Fließkomma, das weit über den Umfang einer einzelnen Frage hinausgeht, aber wenn Sie mit Fließkomma in anderen Sprachen vertraut sind, ist es die gleiche allgemeine Idee.

Wenn Sie ein allgemeines Verständnis davon haben möchten, was Gleitkomma ist und wie es funktioniert, ist die Wikipedia Article nicht schlecht. Eine viel fortgeschrittenere Behandlung ist David Goldbergs Klassiker "Was jeder Informatiker über Fließkomma-Arithmetik wissen sollte", erhältlich als here als Webseite und here als PDF.

+0

Ist es möglich, auch ein W zu bekommen: My_Real: = 123456.0? – onaclov2000

+4

@ onaclov2000: Natürlich. Vielleicht möchten Sie [diesen Artikel] (http://en.wikipedia.org/wiki/Floating_point) lesen. Sie könnten * schließlich * Goldbergs "Was jeder Informatiker über Fließkomma-Arithmetik wissen sollte" lesen. –