For example:
d3.format("+.1%")(-0.0001) // "+0.0%"
This appears to be intentional:
// If a negative value rounds to zero during formatting, treat as positive.
if (valueNegative && +value === 0) valueNegative = false;
But this is pretty confusing, e.g. in this diverging bar chart:

The code that does this references #42, and it’s not clear whether the fix for formatting -Infinity inadvertently broke formatting for negative near-zero values.