• Domingo 15 de Diciembre de 2024, 03:39

Autor Tema:  numero de cifras significativas  (Leído 1091 veces)

rompecabezas

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
numero de cifras significativas
« en: Viernes 29 de Enero de 2010, 13:42 »
0
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@

:)