Sprintf ei tunnista pilkullisia desimaaleja.

php > echo sprintf('%.2f', '123,12');
123.00
php > echo sprintf('%.2f', '123.12');
123.12

Tästä syystä siis str_replace(' , ' , ' . ', $float) pitää tehdä ennen kuin se annetaan sprintf:lle

Kantaan insertöitäessä muutos pilkusta pisteeksi pitää tehdä juuri ennen queryyn muodostamista. Operaatio pilkusta pisteeksi muuttamisen ja queryn muodostamisen välillä saattavat muuttaa arvon takas pilkulliseksi riippuen localesta.