Problemas con redondeo...

03/05/2006 - 22:17 por GustavoArriola | Informe spam
Hola a todos!

Tengo un procedimiento que realiza el redondeo por medio de la espacio
system.math, también tengo otro que llama a un procedimiento almacenado en
SQL Server 2000 que también realiza un redondeo. Sin embargo la forma de
redondeo entre ambos es diferente.

¿Cómo puedo hacer para que el redondeo en vb.net coincida con el de SQL?
¿Tendré que crear mi propia rutina de redondeo?

Redondeo SQL Redondeo VB.NET
4.4 -- 4 4.4 '4
4.5 --5 4.5 '4
4.6 --5 4.6 ' 5

Desde ya muchas gracias!
Gustavo Arriola
 

Leer las respuestas

#1 Angel. E. Ruiz. P
03/05/2006 - 22:29 | Informe spam
Amigo la solucion es a pie lo tengo en c# te dejo como tarea transformarla a
vb .net .)


public class VVMath

{

/// <summary>

/// Realiza el redondeo utilizado el metodo asymetrico artimetrico

/// 2.45 = 2.5

/// </summary>

/// <param name="numToRound"></param>

/// <param name="numOfDec"></param>

/// <returns></returns>

public static float Round(float numToRound, int numOfDec)

{

return (float)Round((decimal)numToRound, numOfDec);

}

/// <summary>

/// Realiza el redondeo utilizado el metodo asymetrico artimetrico

/// 2.45 = 2.5

/// </summary>

/// <param name="numToRound"></param>

/// <param name="numOfDec"></param>

/// <returns></returns>

public static double Round(double numToRound, int numOfDec)

{

return (double)Round((decimal)numToRound, numOfDec);

}


/// <summary>

/// Realiza el redondeo utilizado el metodo asymetrico artimetrico

/// 2.45 = 2.5

/// </summary>

/// <param name="numToRound"></param>

/// <param name="numOfDec"></param>

/// <returns></returns>

public static decimal Round(decimal numToRound, int numOfDec)

{

if (numOfDec < 0)

{

throw new ArgumentException("BetterMath.Rounding:" +

" Number of decimal places must be 0 or greater",

"numOfDec");

}

decimal num = numToRound;

//Shift the decimal to the right the number

//of digits they want to round to

for (int i = 1; i <= numOfDec; i++)

{

num *= 10;

}

//Add/Subtract .5 to TRY to increase the number

//that is to the LEFT of the decimal

if (num < 0)

{

num -= .5M;

}

else

{

num += .5M;

}

//Cut off the decimal, you have your answer!

num = (decimal)((int)num);

//Shift the decimal back into its proper position

for (int i = 1; i <= numOfDec; i++)

{

num /= 10;

}

return num;

}

}


Saludos cordiales,
Ángel Ruiz
MCP C#
MVP de Visual Basic desde 2004
Caracas - Venezuela
"El conocimiento es un bien, que crece a medida que se comparte"
"GustavoArriola" escribió en el mensaje
news:
Hola a todos!

Tengo un procedimiento que realiza el redondeo por medio de la espacio
system.math, también tengo otro que llama a un procedimiento almacenado en
SQL Server 2000 que también realiza un redondeo. Sin embargo la forma de
redondeo entre ambos es diferente.

¿Cómo puedo hacer para que el redondeo en vb.net coincida con el de SQL?
¿Tendré que crear mi propia rutina de redondeo?

Redondeo SQL Redondeo VB.NET
4.4 -- 4 4.4 '4
4.5 --5 4.5 '4
4.6 --5 4.6 ' 5

Desde ya muchas gracias!
Gustavo Arriola

Preguntas similares