comp.lang.ada
 help / color / mirror / Atom feed
From: "REH" <me@you.com>
Subject: Re: Ada decimal types
Date: Fri, 05 May 2006 18:08:52 GMT
Date: 2006-05-05T18:08:52+00:00	[thread overview]
Message-ID: <UwM6g.5985$Gg.392@twister.nyroc.rr.com> (raw)
In-Reply-To: ZcKdnZAJrtSdH8bZRVn-jQ@comcast.com


<tmoran@acm.org> wrote in message news:ZcKdnZAJrtSdH8bZRVn-jQ@comcast.com...
>> A decimal type is a fixed pointed type.  I don't want to use a binary 
>> fixed
>> point because it would change the precision.  Currently any value of
>> microsecond granularity can be represented.  If I use a binary fixed 
>> point,
>> that would change.
>    I think you are expecting a fixed point decimal type to be stored in
> decimal notation.  The value 1/10 could be stored precisely as "0.1",
> but 1/10 could not be stored precisely as a binary fraction.
>
>  But that's not how Ada "fixed point", even decimal fixed point, works.
> "The set of values of a fixed point type comprise the integral multiples
> of a number called the 'small' of the type." ARM 3.5.9(8)  The only
> difference between a decimal and an ordinary fixed point is that the
> 'small' for a decimal is a power of ten, while the 'small' for an
> ordinary is typically a power of two (unless you specify otherwise).
> Thus a decimal fixed point type with a delta of 1/10 would be stored,
> as integer multiples of 1/10.  The value 1/10 would be stored as 1,
> with the implied scaling factor of "divide by 10".
>  So
> type Mission_Time_Type is delta 1.0e-6 digits 16 range 0.0 .. (2.0**32) - 
> 1.0;
> will store the number of microseconds.  In effect your current record
> with two 32 bit integers is storing the same thing, it just stores
> (number of microseconds)/1_000_000 in one word and
> (number of microseconds) mod 1_000_000 in the other word, while type
> Mission_Time_Type would store
> (number of microseconds)/2**32 in its upper 32 bits and
> (number of microseconds) mod 2**32 in its upper 32 bits.
> Since all arithmetic is done conceptually as integers (the only difference
> is in how they are stored), they should give the same answers and the
> same precision.

I do know how fixed points "work."  You are making assumptions about my 
expectations and the standard.  Both of which are wrong.  The internal of 
the decimal type are not defined by the standard.  It could be stored at 
integers; it could be BCD.  I personally don't care how it is stored.  I 
just know that Ada guarantees me that if my delta is 1.0e6, it can represent 
every multiple of it within my range.  You can specualate all you want about 
how it "works."  I just care that it does.

REH





  reply	other threads:[~2006-05-05 18:08 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-04 15:23 Ada decimal types REH
2006-05-04 18:17 ` Jeffrey R. Carter
2006-05-04 22:20   ` REH
2006-05-05  9:14 ` Stephen Leake
2006-05-05 11:33   ` REH
2006-05-05 16:49     ` tmoran
2006-05-05 18:08       ` REH [this message]
2006-05-05 18:49         ` tmoran
2006-05-05 18:59           ` REH
2006-05-06  8:59         ` Keith Thompson
2006-05-06 14:01           ` REH
2006-05-06 15:48             ` Simon Wright
2006-05-06 16:39               ` REH
2006-05-08 21:19                 ` Randy Brukardt
2006-05-09 23:21                   ` REH
2006-05-10  1:08                     ` Keith Thompson
2006-05-10  5:37                     ` Simon Wright
2006-05-10 12:22                       ` REH
2006-05-10 20:47                         ` Randy Brukardt
2006-05-10 21:26                           ` REH
2006-05-10 20:52                       ` Randy Brukardt
2006-05-11  5:51                         ` Simon Wright
2006-05-11 22:33                           ` Randy Brukardt
2006-05-05 20:32     ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox