Redondeo de decimal.

15/02/2005 - 10:35 por JOSE ANTONIO | Informe spam
El metodo round de decimal, no se comporta redondeando como estamos
acostumbrados en la UE.
si el ultimo decimal a redondear es mayor o igual a 5 se suma.

7,45 = 7,4
7,44=7,4

Sin embargo el ROUND de sql server si se comporta de esta forma.

Cuando van a estandarizar el round para que los programadores no nos hagamos
la picha un lio con comportamientos diferentes en lo que debiera ser la
misma función?

Para poder redondear en c# de la misma forma que lo hacer ROUND de sql
server hay que crear una clase o metodo nuevo?


Saludos.
 

Leer las respuestas

#1 Gandalf
15/02/2005 - 11:37 | Informe spam
Hola, espero que te sirva:

num: es el número que quiero redondear
decimales: el número de decimales que quiero

Habría que pulir un poco más las funciones para hacerlas más robustas
public static double Round(double num,int decimales)

{

//no miro si num es negativo (-(int)((-num*multi)+0.5d))/multi;

double multi=Math.Pow(10.0d,(double)decimales);

return ((int)((num*multi)+0.5d))/multi;

}

public static decimal Round(decimal num,int decimales)

{

decimal multi=(decimal)Pow(10,decimales);

return ((long)((num*multi)+0.5m))/multi;

}

Un Saludo.

Preguntas similares