Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: CM2ARY en 10 Agosto 2017, 19:45 pm



Título: Redondear Multiplos
Publicado por: CM2ARY en 10 Agosto 2017, 19:45 pm
Saludos Foro VB.NET

Estoy buscando una fórmula para redondear un número en exceso por el multiplo que se desee. Algo así como la función de excel REDOND.MULT. Espero que alguien me pueda ayudar en eso.

Gracias


Título: Re: Redondear Multiplos
Publicado por: TickTack en 10 Agosto 2017, 22:19 pm
A que te referies con "número en exceso"?

Saludos


Título: Re: Redondear Multiplos
Publicado por: Serapis en 11 Agosto 2017, 02:53 am
Tienes varias opciones de redondeo...

La función adecuada depende de como esperes que responda, también con los números negativos.

Si Siempre ha de ser por exceso, la función es Ceiling.
Si lo que deseas es un redondeo al número más próximo, la función es Round.
Si siempre ha de ser la parte entera (eliminar los decimales), la función es Fix.
Si siempre ha de ser el valor más bajo, la función es Int, o Floor.

Aquí un ejemplo de prueba y comentado el resultado que arroja:
Código
  1. Dim x as single, y as integer
  2.        x = 15.62
  3.        y = Int(x) ' 15
  4.        y = Fix(x) ' 15
  5.        y = Math.Ceiling(x) ' 16
  6.        y = Math.Floor(x)   ' 15
  7.        y = Math.Round(x)   ' 16
  8.  
  9.        x = 15.32
  10.        y = Int(x) ' 15
  11.        y = Fix(x) ' 15
  12.        y = Math.Ceiling(x) ' 16
  13.        y = Math.Floor(x)   ' 15
  14.        y = Math.Round(x)   ' 15
  15.  
  16.        x = -15.62
  17.        y = Int(x) ' -16
  18.        y = Fix(x) ' -15
  19.        y = Math.Ceiling(x) ' -15
  20.        y = Math.Floor(x)   ' -16
  21.        y = Math.Round(x)   ' -16
  22.  
  23.        x = -15.32
  24.        y = Int(x) ' -16
  25.        y = Fix(x) ' -15
  26.        y = Math.Ceiling(x) ' -15
  27.        y = Math.Floor(x)   ' -16
  28.        y = Math.Round(x)   ' -15


p.d.: Para hacelro con un múltiplo (si mal no entendí, ya me dirás)... sería así un ejemplo:
Código
  1. X = (20\(20\3)) * Math.ceiling(20/3)
  2. (20\6) = 3
  3. (20/3) = 6.6666 : Math.Ceiling(6.66666) = 7
  4. x = (3 * 7) = 21


Título: Re: Redondear Multiplos
Publicado por: CM2ARY en 13 Agosto 2017, 02:11 am
Gracias a todos. Resolví con este.

Código
  1. Dim RoundXMultiple As Integer
  2. RoundXMultiple = Math.Round(Num / Múltiplo) * Múltiplo