Conversión de doble a entero [duplicado]

Esta pregunta ya tiene una respuesta aquí:

C ++: ¿Cómo redondear un doble a un int? [duplicar 5 respuestasround () para flotante en C ++ 20 respuestas

Estoy atrapado en un problema en el que el número doble no se está convirtiendo correctamente a entero.

En este caso ->

int x=1000;

double cuberoot=pow(x,(1/(double)3));

int a=cuberoot;

cout<<"cuberoot="<<cuberoot<<endl;

cout<<"a="<<a<<endl;

Salida

cuberoot=10
a=9

¿Por qué aquí a = 9 y no 10?

¿¿Alguna solución a este problema?

Además, no quiero redondear el valor ... si a = 3.67, entonces debería convertirse a 3 solamente y no a 4.

Respuestas a la pregunta(2)

Su respuesta a la pregunta