Why pow (10,5) = 9,999 en C ++

Recientemente escribo un bloque de código:

const int sections = 10;

for(int t= 0; t < 5; t++){
   int i = pow(sections, 5- t -1);  
   cout << i << endl;
}

Y el resultado es incorrecto:

9999
1000
99
10
1

Si estoy usando solo este código:

for(int t = 0; t < 5; t++){
    cout << pow(sections,5-t-1) << endl; 
}

El problema ya no ocurre:

10000
1000
100
10
1

¿Alguien me da una explicación? ¡muchas gracias

Respuestas a la pregunta(18)

Su respuesta a la pregunta