Difference between the representation of (3.1-3) and of 0.1

### 10.1.4 Difference between the representation of (3.1-3) and of 0.1

For the representation of 0.1:

0.1 |
=2−4·(1+ |
1
2
| + |
1
24
| + |
1
25
| + |
1
28
| + |
1
29
| +…)
= 2−4· |
∞
∑
k=0
| ( |
1
24*k
| + |
1
24*k+1
| )

hence α=1 and

m= |
1
2
| + |
∞
∑
k=1
| ( |
1
24*k
| + |
1
24*k+1
| ),

therefore the representation of 0.1 is

`3f (00111111), b9 (10111001), 99 (10011001), 99 (10011001),`
`99 (10011001), 99 (10011001), 99 (10011001), 9a (10011010),`

the last octet is 1010, indeed the 2 last bits 01 became 10 because the following digit is 1 (upper rounding).

For the representation of a:=3.1−3:
Computing a is done by adjusting exponents (here nothing to do), then subtracting the mantissa and adjusting the exponent of the result to have a normalized float. The exponent is α=−4 (that corresponds at 2·2−5) and the bits corresponding to the mantissa begin at 1/2=2·2−6: the bits of the mantissa are shifted to the left 5 positions and you get:

`3f (00111111), b9 (10111001), 99 (10011001), 99 (10011001),`
`99 (10011001), 99 (10011001), 99 (10011001), a0 (10100000),`

Therefore, a>0.1 and a−0.1=1/250+1/251 (since 100000-11010=110).

Remark:
This is the reason why:
Input:

floor(1/(3.1-3))

returns 9 and not 10 when Digits:=14.