Issue 121307

Summary: Range of values for variables of type Double and Single are wrong
Product: documentation Reporter: salva_sbs <admin>
Component: ManualsAssignee: AOO issues mailing list <issues>
Status: UNCONFIRMED --- QA Contact:
Severity: Normal    
Priority: P3 CC: admin, orcmid
Version: AOO 3.4.1   
Target Milestone: ---   
Hardware: All   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---

Description salva_sbs 2012-11-03 17:24:33 UTC
In the help of OOo Basic, Pootle (¿?) and on the wiki Basic Guide http://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Numbers, are listed of erroneous form (or incorrect notation, or at least confusing in my opinion) the values accepted by variables of type Single and Double.

** Wiki:
Single variables:
Single variables can store any positive or negative floating point number between 3.402823 x 10<sup>38</sup> and 1.401298 x 10<sup>-45</sup>.

Correctly:
Single variables can store any positive floating point number between 1.401298 x 10<sup>-45</sup> and 3.402823 x 10<sup>38</sup>, or any negative floating point number between -3.402823 x 10<sup>38</sup> and -1.401298 x 10<sup>-45</sup>.

Double variables:
Double variables can store any positive or negative floating point numbers between 1.79769313486232 x 10<sup>308</sup> and 4.94065645841247 x 10<sup>-324</sup>

Correctly:
Double variables can store any positive floating point numbers between 4.94065645841247 x 10<sup>-324</sup> and 1.79769313486232 x 10<sup>308</sup>, or any negative floating point numbers between -1.79769313486232 x 10<sup>308</sup> and -4.94065645841247 x 10<sup>-324</sup>


** In Spanish OpenOffice.org Basic Help, page "tipos de variables" (incorrect notation also):
Single: Las variables simples pueden tener valores positivos o negativos desde 3,402823 x 10E38 a 1,401298 x 10E-45

Double:
Las variables dobles pueden tener valores positivos o negativos desde 1.79769313486232 x 10E38 a 4.94065645841247 x 10E-324


** In English Pootle (incorrect notation): 
1.797 x 10E30
Correctly:
1.797 E30  or  1.797 x 10<sup>30</sup>

Note: <sup>superscript</sup>

Sorry for my English disastrous. I use Google translator :)
Comment 1 orcmid 2012-11-03 18:04:45 UTC
Good catch!

Also, don't forget that 0 is representable.

The (English) comment about the reason for singles versus doubles is incorrect.  

The basic reason for the difference is in the amount of storage required where many such values are used.  In many systems, such as the use of C Language, all computations are in double even though variables can be either single or double.

Because this is about the numerals represented in Basic, it is probably all right to use floating-point scientific notation in these cases.

For example,

"Single variables carry 4-byte floating-point representations of positive and negative magnitudes.  The values preserve approximately 7 decimal digits of precision.  The floating-point values include 0 and approximate magnitudes in the interval from 1.4E-45 to 3.402823E+38."  

I assume the notation itself is defined elsewhere.  I also believe that the low end is achieved only with unnormalized (lower precision) values, so giving an exact value there is misleading.
Comment 2 Rob Weir 2013-02-08 02:06:53 UTC
Of course, floating point numbers cannot represent *any* number in the range, due to its finite precision.  But we don't need to be pedantic about this.  For the intended audience of this documentation is is sufficient to give the lower and upper bounds.  We don't need to explain numeric underflow.  I think Dennis's wording is good.
Comment 3 salva_sbs 2013-03-27 15:01:19 UTC
exact = correct = pedantic?
Right. 'm pedantic ;)