Carefully handle -0 (which is different than 0) for floats/doubles

Fixes #66