Я не вижу точно, что вам нужно. Примеров недостаточно, а описание задачи недостаточно.
Число отформатировано со знаком и двумя десятичными знаками. Если последний di git равен 0, он удаляется с помощью preg_replace ().
$data = ['-12.20000','+18.20000', 234.0, 2.1234];
foreach($data as $value){
$formatVal = sprintf("%+0.2f",$value);
$formatVal = preg_replace('~(\.\d)0$~','$1',$formatVal);
echo $value.' -> '.$formatVal."<br>\n";
}
Вывод:
-12.20000 -> -12.2
+18.20000 -> +18.2
234 -> +234.0
2.1234 -> +2.12
Если результат требуется только с одним десятичным знаком , вы можете использовать
$formatVal = sprintf("%+0.1f",$value);
без preg_replace.