comp.lang.ada
 help / color / mirror / Atom feed
From: anon@att.net
Subject: Re: evaluation of named numbers
Date: Sun, 17 Oct 2010 22:32:53 +0000 (UTC)
Date: 2010-10-17T22:32:53+00:00	[thread overview]
Message-ID: <i9ftil$7i1$1@speranza.aioe.org> (raw)
In-Reply-To: 2304722c-027d-42f6-a45d-5a7646c35cf6@t8g2000yqk.googlegroups.com

In <2304722c-027d-42f6-a45d-5a7646c35cf6@t8g2000yqk.googlegroups.com>, Rolf <rolf.ebert_nospam_@gmx.net> writes:
>I always thought that named numbers are fully evaluated with (almost)
>unlimited precision at compile time. I was quite astonished to see
>
>  Ticks : constant := 20 / 1000 * 16_000_000 / 8; -- 40_000 ticks
>
>evaluated to 0 and not to the expected 40.000. It seems that the
>compiler uses integer numbers also for intermediate results and 20 /
>1000 ends up to be 0 instead of 0.02. Any decent pocket calculator
>gets that right.
>
>The workaround is simple once I understood the problem:
>
>   Ticks : constant := 20 * 16_000_000 / 8 / 1000; --  40_000 ticks
>
>Are expressions for named numbers always evaluated left to right? I
>think I'll add an item to the review check list to always put
>multiplications on the left before any divisions.
>
>   Rolf


Since, Rm 4.5(8) states the Ada's answer to this problem but it 
solution in using parentheses will not corrent the problem so 
rewrite the equation may be needed.


  Ticks : constant := 20 * 16_000_000 / 8 / 1000 ; -- 40_000 ticks






      parent reply	other threads:[~2010-10-17 22:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-17 15:01 evaluation of named numbers Rolf
2010-10-17 15:28 ` Vinzent Hoefler
2010-10-17 16:05 ` Robert A Duff
2010-10-17 18:32   ` Georg Bauhaus
2010-10-17 18:57 ` Nasser M. Abbasi
2010-10-17 22:30 ` anon
2010-10-17 22:32 ` anon [this message]
replies disabled

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