il problema, probabilmente, è che non stai castando a float i valori e di conseguenza stai lavorando con gli interi che non hanno una virgola mobile
Nei linguaggi fortemente tipizzati generamente vieni "bacchettato" dal compilatore, ma php non ti avvisa minimamente
prova a fare
$iva = (float)$price * (float)0.20;
(che è la stessa cosa tua, solo che il 20 lo divido direttamente per 100)