necesito saber como cambiar el numero de cifras significativas (int nCifSig) de un numero en particular (double val). de momento he intentado:
double base = 10;
double cifras, num1, num2;
cifras = pow ( base, nCifSig);
val = val*cifras ;
num1 = ceil(val);
num2 = floor(val);
if( fabs( fabs(val)-fabs(num1)) > fabs(fabs(val) - fabs(num2)))
{ val = num2/cifras ; }
else { val = num1/cifras ; }
funciona, pero si tengo xej 5.52285628e-03 y quiero 2 cifras significativas (es decir quiero 5.52e-03) el programa ve el numero como 0.00552285628 y por tanto me devuelve 0.01
mi otra opcion es usar setprecision(nCifSig); pero eso me cambia la precision permanentemente... ahi seria ideal poder hacer algo del tipo
oldprecision = getprecision(); // esta funcion me la he inventado, claro, eso es lo que no sé hacer...
setprecision(nCifSig);
....
setprecision(oldprecision); // una vez necesite mi vieja precision
toda sugerencia / ayuda / consejo es bienvenid@