<<
This is not really a bug, this is a limitation of a data type that uses only 4 
bytes to store the value. You cannot preserve precision to more than 6 
significant digits with the REAL data type. Counting the "." as a significant 
digit, you are asking for 7.
>>

Bill:

This system has been in continuous operation for about 20 years, never showing 
this display issue prior to this morning.

Prior to this morning the numbers displayed as expected.  After the update, the 
display is different between SELECT and BROWSE and the BROWSE display is 
different than it was yesterday.  It's possible that the new BROWSE format is 
technically "correct" in terms of what you should see from a float (although I 
don't think so in most cases, see below), but it breaks this entire system. 
 Also, shouldn't SELECT and BROWSE display the same value?

As to the issue with REALs being limited in terms of the precision of the 
mantissa, I'm aware of that.  In the case I cited I'm only asking for six 
digits 
of precision (the location of the decimal point is determined by the exponent, 
the six digits of mantissa precision don't count the decimal).  

That said, I do not believe that this is a _storage_ issue, but rather a 
display 
issue.  That's because the database includes some REALs that correctly display 
even with 7 digits of precision.  For instance, the number 99907.19 displays 
that way in SELECT and as 99907.190000000002 in BROWSE.  (Or it may be.  R:Base 
states that REAL has six digits of accuracy, but C floats have, if I recall 
correctly, 7 digits and this database only goes up to 7 digits).

At a guess, I think what's happening is that R:Base has started casting REAL to 
DOUBLE before displaying the number in BROWSE or Forms (but not SELECT).  

Please try the following attached to RRBWY14.  You'll see the issue right away:

UPDATE Levels SET LevPerc = 50000.1 WHERE COUNT = 1
UPDATE Levels SET LevPerc = 99907.19 WHERE COUNT = 1
SELECT LevPerc FROM Levels WHERE COUNT < 3
BROWSE LevPerc FROM Levels WHERE COUNT < 3

You will see that SELECT and BROWSE produce different results.  At the very 
least, they should display the numbers the same way.  Furthermore, prior to 
this 
morning, BROWSE (and forms, which also show the change) produced the result you 
see in SELECT.

--
Larry

Reply via email to