no weird precision errors, but 0 isn't a real 0