On Wed, 24 Apr 2019 17:08:50 +0200, Mike Wey wrote:

A float can't exactly represent 0.1 with the precision of float that
is actually 0.100000001490116119384765625 witch seems to be the source
of the issue.

Ah! Okay, that makes sense. It would also explain why, as the spinner passes zero, it dumps out that exponential notation.

There seem to be a precision/rounding error when using float, changing
the step variable in the two float spin button classes to double fixes
the issue.

One other change I had to make was switching back to addOnValueChanged(). I guess because I used setDigits() to extend precision, it was setting up that second signal talked about in that note you linked to. For whatever reason, the addOnOutput() callback still double-fires, but addOnValueChanged() doesn't.

So, problem solved. Thanks very much for the help, Mike.