Почему результат 28?
https://ru.wikipedia.org/wiki/IEEE_754-2008
P.S. Деньги никогда не хранятся и "оперируются" float переменными. Это догма.
php > var_dump((floatval(0.29) - intval(0.29)) * 100);
float(29)
php > var_dump(intval((floatval(0.29) - intval(0.29)) * 100));
int(28)
1) Вы какую лишнюю магию с числами делаете
2) Работу с валютой принято делать целыми числами, например в центах/копейках
А по теме: floating-point-gui.de