Foros del Web » Programación para mayores de 30 ;) » .NET »

ASP.NET Problema al Redondear cantidades de Dinero

Estas en el tema de ASP.NET Problema al Redondear cantidades de Dinero en el foro de .NET en Foros del Web. Hola amigos, tengó un quebradero de cabeza por que no me cuadran mis cuentas... Todo debido a que, si la paridad de la moneda es ...
  #1 (permalink)  
Antiguo 14/04/2005, 12:50
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
ASP.NET Problema al Redondear cantidades de Dinero

Hola amigos, tengó un quebradero de cabeza por que no me cuadran mis cuentas...

Todo debido a que, si la paridad de la moneda es Dolar la multiplico por el tipo de cambio, hasta aqui no hay problema si se trata de cantidades enteras..

El problema surge cuando las cantidades son decimales y más ahun cuando un cargo tiene un descuento (por ejemplo 10% que es: 0.1)


Por ejemplo: si tengo 0.9850001 que me resulta de una multiplicacion, y esto lo guardo en un Single.

trato de usar el Math.Round(MiVariable,2) pero me redonde la cantidad a 0.99

La pregunta es: que funcion tiene .NET ó como le puedo hacer para obtener 0.98 SIN tratar de obtener "0.98" como si fuese una cadena...

Por lo visto Math.Round no me extrae el 0.98 que deseo, como podría obtener tal cantidad??

Es por eso que mis cuentas no cuadran, por este problema...

Nosé si alguien ya haya pasao por este problema... Espero que alguien me pueda orientar...

GRacias!!!!!
  #2 (permalink)  
Antiguo 14/04/2005, 13:46
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
igual pero .truncate
  #3 (permalink)  
Antiguo 14/04/2005, 14:47
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Intentalo de ésta forma:

Cita:
Dim sTemp As String = 0.98533

sTemp = sTemp.Substring(sTemp.IndexOf("."), 3)
Dim s As Single = CType(sTemp, Single)

Response.Write(s)
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 15/04/2005, 00:54
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Es verdad, perdón, truncate se queda sólo con los enteros
  #5 (permalink)  
Antiguo 15/04/2005, 08:18
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Ya lo he resuelto, lo que pasa es que cuando se multiplican 2 numeros que no tienen tipo (por ejemplo 2 columnas de un row) da resultado un Double con muchisimos decimales...

A partir del 6 decimal a la derecha se llena de basura.. (numeros que ni al caso) lo que hize es redondear a 4 (los primeros 4 decimales) y el resultado redondear a 2 decimales... Lo que me estaba chingando era la "basura" que genera de la multiplicacion, es lo que hacia que se redondeara a de 0.885 a 0.99, entonces ahora si me queda el 0.88 que era el que queria...

Esto me lleva a pensar que el .NET no hace bien el redondeo (segun las reglas de redondeo)

Pero.. tambien me lleva a pensar que 100 Millones de dolares no pueden estar equivocados... jajajaj asi es como dicen mis colegas "el .net si jala bien, 100 millones de dolares no pueden estar equivocados.."


jajja.. gracias x la ayuda.
Salu2

Última edición por Stream; 15/04/2005 a las 08:31
  #6 (permalink)  
Antiguo 21/10/2007, 21:32
 
Fecha de Ingreso: octubre-2007
Mensajes: 1
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: ASP.NET Problema al Redondear cantidades de Dinero

Esteeee.... .NET no se equivoca... 0.985 segun las reglas del redondeo es efectivamente 0.99!!!!!
lo que ntentas hacer es una especie de truncamiento... lo puedes resolver como bien expuso RootK o de la siguiente manera

dim numero as integer =0,985
dim resultado as integer

resultado = math.truncate(numero*100)/100

Saludos.
Fernando Roldan
http://fernandoroldan.blogspot.com
http://www.flr-si.com.ar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:41.