1.0e-38 is as close to zero as you can get without actually being zero.
If you subtract 1 from zero, you get -1.
Did you expect it to be as close to -1 as you can get without being -1?
This may not be C++ at all, but the hardware. Or maybe C++ is rounding it for display.