Вы ведь специально + указываете.
An optional sign specifier that forces a sign (- or +) to be used on a number. By default, only the - sign is used on a number if it's negative. This specifier forces positive numbers to have the + sign attached as well, and was added in PHP 4.3.0.
www.php.net/sprintf
Вот так работает нормально:
echo sprintf('%s %d°', 'В городе N', 1); // В городе N +1°
echo sprintf('%s %d°', 'В городе N', -1); // В городе N -1°
echo sprintf('%s %d°', 'В городе N', 0); // В городе N +0°
Ну или для надёжности можно знак явно указать, на случай если в будущих версиях php изменится поведение по-умолчанию:
'%s %-d°'