Floating point arithmetic is only carried out to a finite accuracy
by computer hardware.
This means that there is
a limited number of significant digits
(about 6 decimal digits for 32-bit floats,
more, perhaps 16 digits, for 64-bits etc.)
a maximum floating point number
a minimum +ve floating point number >0
1.0 = 1.0 - δ
Because of the finite accuracy,
there is a floating point number,
δ > 0.0, such that
1.0 - δ equals 1.0 as far as the computer hardware can tell.
Click on `go' in the form below to see what δ is
for the implementation of JavaScript on your computer:
δ is quite small, but it is certainly greater than zero.
Underflow
Mathematically, the following two equations are equal:
big - (big' - δ) -- 1
(big - big') + δ -- 2
However, if big~big' then
then equation #1 may loose accuracy.
Consider the extreme case in which big=big'=1.0.
Then equation #1 will evalute to zero, but equation #2 will evaluate to δ,
not zero!