Uso corretto di std :: cout.precision () – non stampa di zero finali

Vedo molte domande sul numero di precisione per i numeri in virgola mobile ma in particolare voglio sapere perché questo codice

#include  #include  int main() { int a = 5; int b = 10; std::cout.precision(4); std::cout << (float)a/(float)b << "\n"; return 0; } 

mostra 0.5 ? Mi aspetto di vedere 0.5000 . È a causa dei tipi di dati interi interi?