Redondear 2 lugares después de la coma

17/10/2004 - 21:16 por Zenkius | Informe spam
Estoy haciendo operaciones matemáticas que tienen muchos
lugares después de la coma y quisiera redondearlo a sólo 2
lugares.

Cómo puedo lograr esto????

Saludos y muchos Zenkius.

Preguntas similare

Leer las respuestas

#6 Antonio Cuesta
18/10/2004 - 18:05 | Informe spam
En España siempre los redondeos financieros han sido por exceso, (como el
del Euro), de mis tiempos del GW-Basic, donde estas cosas se hacian muy a
mano se me ocurre lo siguiente:

public static double Redondear(double valor,int dec)

{

if (dec>=0)

return Math.Round(valor+(1 / Math.Pow(10,(double)dec+1d)),dec);

else

throw new Exception("Mensaje que mas guste a uno.");

}



Un saludo a todos:

Antonio Cuesta
Respuesta Responder a este mensaje
#7 Javier
18/10/2004 - 20:42 | Informe spam
no si el metodo de redondeo que yo decia, es para 0,1,2,3,4 no suma , y para
5,6,7,8,9 si suma, mientras que el de Math lo que hace es 0,1,2,3,4,5 no
suma y para 6,7,8,9 si suma, el metodo de redonde que Math es logico para
operaciones matematicas, pero no para trabajos con numero, la regla del
banquero que tu comentas es interesante, no la conocia.
pero claro, para una aplicacion de euros usar el Round() esta metiendo un
fallo en tu aplicacion bestial que puede llegar a tener diferencias de
centimos en facturas, y en la contabilidad global pues dependera del volumen
de la empresa, pero se estaria fallando en el trato de los datos.


"Octavio Hernandez" escribió en el mensaje
news:%
Javier,

Asunto interesante. Efectivamente, habría que tener cuidado.

El sistema de redondeo que usa Decimal.Round() es el "del banquero", que
en
caso de equidistancia siempre devuelve la última cifra par. En el caso que
mencionas, creo que 2,455 redondeado a 2 decimales producirá 2,46, porque
6
es par mientras que 5 es impar. Pero 2,345 se redondeará a 2,34 y no a
2,35,
como debería ser si esa regla del euro que mencionas es así.

La idea de algoritmo del banquero es que cuando se sumen varios números
redondeados de esa forma algunas veces se aumente y otras se disminuya
para
"compensar", mientras que el algoritmo del euro que mencionas siempre
sumaría hacia arriba...

He encontrado un buen enlace sobre métodos de redondeo, aunque no hecho
para
.NET:

http://support.microsoft.com/defaul...mp;SD=MSKB

Ahora estoy buscando alguna directiva oficial de la Comunidad Europea,
Banco
de España o algo así que mencione el tema. Si conoces alguno...

Salu2 - Octavio

"Javier" escribió en el mensaje
news:%23g0K6$
pero depende de lo que quiera redondear ¿no? porque por lo que he visto
de
ese metodos, si tenemos por ejemplo el numero 2,455 y queremos
redondearlo


a
2 decimales, este nos lo deja en 2.45, pero si estamos trabajando con


euros,
deberia de redondear a 2.46 porque por lo que tengo entendido, la regla
de
redondeo del euro es la siguiente

EL TERCER DECIMAL
ES: 5, 6, 7, 8 o 9 SUMAR
UN CENT (0,01)

EL TERCER DECIMAL
ES: 1, 2, 3, o 4 NO SUMAR
UN CENT (0,01)


por lo cual ese metodo es "correcto" para redondear numeros, pero no
importes de euro.


"Octavio Hernandez" escribió en el mensaje
news:
>
> Si estás utilizando valores double, utiliza Math.Round(),
>
>


http://msdn.microsoft.com/library/d...dTopic.asp
>
> Slds,
>
> Octavio
>
> "Zenkius" escribió en el mensaje
> news:1b3101c4b47d$ca5bebf0$
> Estoy haciendo operaciones matemáticas que tienen muchos
> lugares después de la coma y quisiera redondearlo a sólo 2
> lugares.
>
> Cómo puedo lograr esto????
>
> Saludos y muchos Zenkius.
>
>
>







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida