Ayuda con tarea C#

Wise Man

Bovino maduro
#1
buenas tardes tengo un problemita con una tarea que ya me trae y no he podido encontrar como resolverla espero y me puedan ayudar:

necesito hacer un metodo que reciba de muestra dos numeros decimales, (supongamos 2.34 y 4.5678), entonces el metodo debe darse cuenta cuantas cifras tiene el primer numero despues del punto y elevar o redondear siempre a la siguente unidad el segundo numero de modo que ambos queden con el mismo numero de cifras por ejemplo:

ToNextDouble(2.34, 4.5678) debe retornar 4.57 (elevar al siguiente numero la segunda cifra ya que el primero tiene 2)

ya hice este par de metodos pero no me funcionan, alquien me puede echar la mano?

Código:
        static public int ToNextIntNumber(double a)
        {//Reciba un numero decimal y lo eleva al siguiente entero
            int b;
            b = Convert.ToInt32(a);
            if ((a % 1) != 0 && ((a % 1) <= 0.5))
                b++;
            return b;
        }

        static public double ToNextDouble(double nToRise, double nIndividual)
        {
            int i = 1;
            while (true)
                if ((nIndividual * i) % 1 == 0)
                    break;
                else
                i *= 10;
            nToRise *= i;
            int a = ToNextIntNumber(nToRise);
            return a/i;
        }
 

xomen

Bovino maduro
#2
no me recuerdo bien mis clases de c de la prepa pero yo lo aria masomenos asi

la variable en donde recojes los datos
y nomas pones
printf("%f\n", (int)(tu-variable*100)/100.0);
 

registro500

Bovino adolescente
#3
interesante la opcion del amigo xomen.... tambien te envio otra opcion que es Math.Round para redondeos y el Math.Pow para potencias
Código:
  static public double ToNextDouble(double a, double b){
      double c;
      int sw=1,i=0;
      while(sw==1){
        c = a * Math.Pow(10,i);
        if( ( c - (int)c ) ==0 ) sw=0;
        else i++;
      }
      return Math.Round(b,i);
  }
algunos test :
ToNextDouble(2, 4.5678) => 5
ToNextDouble(2.3, 4.5678 ) => 4.6
ToNextDouble(2.34, 4.5678) => 4.57
ToNextDouble(2.342, 4.5678 ) => 4.568
 

Wise Man

Bovino maduro
#5
interesante la opcion del amigo xomen.... tambien te envio otra opcion que es Math.Round para redondeos y el Math.Pow para potencias
Código:
  static public double ToNextDouble(double a, double b){
      double c;
      int sw=1,i=0;
      while(sw==1){
        c = a * Math.Pow(10,i);
        if( ( c - (int)c ) ==0 ) sw=0;
        else i++;
      }
      return Math.Round(b,i);
  }
algunos test :
ToNextDouble(2, 4.5678) => 5
ToNextDouble(2.3, 4.5678 ) => 4.6
ToNextDouble(2.34, 4.5678) => 4.57
ToNextDouble(2.342, 4.5678 ) => 4.568

Muchas gracias me sirvió bastante tu ayuda
 
Arriba