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)