Странный вывод.а выводилась -0, потому что это число прошло проверку if ($saving >= 0)
<?php
$currenPrice = '2101.00';
$realPrice = '2099.00';
$saving = round(100 - 100*$currenPrice / $realPrice);
var_dump($saving);
echo($saving);
float(-0)
-0
4.1. Ноль
Не все числа можно представить в нормализованном виде. Это достаточно очевидно, хотя бы потому, что есть такое число как 0. Его представление в расширенной точности: нулевая мантисса и порядок, в то время как мы сказали, что старший бит всегда должен быть равен 1. Интересно отметить, что в FPU существует два нуля, и это является математически корректным. Есть +0 и -0. Далее мы узнаем, что FPU не только способно содержать +/-0, но и образовывать +/-0 при арифметических ситуациях.
век живи, век учисьсуществует 0 и -0.

Не, это все-таки не баг.Наверное, нужно баг отправить в PHP?