Bueno, si la variable es tipo double entonces un nùmero puede redondearse de la siguiente forma:
double numero;
Label1->Caption=FormatFloat("0.000",numero); //aqui le decimos que solo queremos los primero tres decimales.
Ahora bien, si tienes un nùmero así: 2,1353263E21
Lo que puedes hacer es tomar el valor de toda la cadena en una variable de tipo String y después identificar la posición del punto decimal (o de la coma) y tomar solo los primeros tres (o los que quieras nùmeros después de él), después localizas la posición de la "E" y copias lo que sigue después de ella, finalmente envías todo a otra cadena y lo muestras en algùn objeto (TLabel, TEdit) y asunto resuelto: Para ello puedes usar un ciclo while o un ciclo for.
Si no entendiste ni "jota", respondeme y te mando un ejemplo (esperando haber entendido tu pregunta).
Espero haber sido de ayuda.
Por cierto, en mi última respuesta de
ESTE POST se muestra como usar el Pos junto con el ciclo for para localizar la posición de caracteres.
Por cierto, lo que mencionas quizá pueda usarse así:
Label1->Caption=StrtoFloat("0.000",numero);
Label1->Caption=FormatStrF("0.000",numero);
pero no puedo comprobarlo porque ahorita no dispongo del compilador.