I didn’t say birkenfield was wrong, but I stand by my statement. The different binary exponents explain *why* they have different nearest binary representations. A lower exponent means the mantissa is representing smaller pieces.

Python makes it easier to see decomposed floats:

```
>>> for f in (0.015, 1.015, 2.015, 3.015):
... print(f.hex())
...
0x1.eb851eb851eb8p-7
0x1.03d70a3d70a3dp+0
0x1.01eb851eb851fp+1
0x1.81eb851eb851fp+1
```

Printing the mantissas in binary:

```
>>> for f in (0.015, 1.015, 2.015, 3.015):
... print(format(int(f.hex()[4:-3], 16), "052b"))
...
1110101110000101000111101011100001010001111010111000
0000001111010111000010100011110101110000101000111101
0000000111101011100001010001111010111000010100011111
1000000111101011100001010001111010111000010100011111
```

Manually aligned to compensate for the different exponents:

```
1110101110000101000111101011100001010001111010111000
0000001111010111000010100011110101110000101000111101
0000000111101011100001010001111010111000010100011111
1000000111101011100001010001111010111000010100011111
```

So I hope you can see how the effective precision of the mantissa made the difference between .0149999… and .015000…