Вот фиговина, и куда с ней идти я не догадываюсь. Для меня открытием стал тот факт что дробные числа, вида 1.52, 1.33, 0.1 и любые другие имеют после ряда нудей еще цифры отличные от 0. Вот пример.
1.33000000000000007105
0.76000000000000000888
1.52000000000000001776
3.04000000000000003553
А вывожу я их так
print(number_format(1.33, 20, '.',' '));
echo "<br>";
print(number_format(0.76, 20, '.',' '));
echo "<br>";
print(number_format(1.52, 20, '.',' '));
echo "<br>";
print(number_format(3.04, 20, '.',' '));
К слову сказать в js получаем такой же результат, с него и началось.
Ведь я указываю простую достаточно дробь, почему при выводе с большей точностью там оказываются другие значения.
Так интересно выглядит другой результат.
0.98999999999999999112
0.10000000000000000555
1.09000000000000007994
print(number_format(0.99, 20, '.',' '));
echo "<br>";
print(number_format(0.1, 20, '.',' '));
echo "<br>";
print(number_format(0.1+0.99, 20, '.',' '));