2012-04-12 75 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