Difference between revisions of "IEEE 754 formats"

From Free Pascal wiki
Jump to navigationJump to search
m
Line 35: Line 35:
  
 
<!-- no syntaxhighlight, because this is a counter-example -->
 
<!-- no syntaxhighlight, because this is a counter-example -->
<syntaxhighlight>
+
<syntaxhighlight lang = "text">
 
     s := '-123.45678';
 
     s := '-123.45678';
 
     s := '0';
 
     s := '0';

Revision as of 20:38, 3 April 2018

English (en)

single, double and extended are Pascal's data types implementing the platform-dependent real. All of them are implemented according IEEE standard 754, where single is “single-precision”, double is “double-precision”, and extended has 80 bits.

single

value range 1.5E-45 .. 3.4E38
accuracy 6-9 significant decimal digits precision
memory requirement 4 bytes or 32 bits
property The single- data-type data field can hold floating-point values ​​and signed and unsigned integer values.

Assigning other values ​​will result in error messages from the compiler when the program is compiled, and the compile will be aborted. That is, the executable program is not created.

Definition of a data field of data type Single:

  var
    s: Single;

Examples of assigning valid values:

    s := -123.45678;
    s := 0;
    s := 123.45678;

Examples of assigning invalid values:

    s := '-123.45678';
    s := '0';
    s := '123.45678';

The difference between the two examples is that the upper example is the assignment of Integer and FloatingCommand literals, while the assignment of the lower example is literals of the String type.

Binary floating-point format

Any value stored as a single requires 32 bits, formatted as shown in the table below:

Bits Usage
31 Sign (0 = positive, 1 = negative)
30 to 23 Exponent, biased by 127
22 to 0 Fraction f of the number 1.f

double

Any value stored as a double requires 64 bits, formatted as shown in the table below:

Bits Usage
63 Sign (0 = positive, 1 = negative)
62 to 52 Exponent, biased by 1023
51 to 0 Fraction f of the number 1.f


navigation bar: data types
simple data types

boolean byte cardinal char currency double dword extended int8 int16 int32 int64 integer longint real shortint single smallint pointer qword word

complex data types

array class object record set string shortstring