Visual Basic - Me está volviendo loco

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Me está volviendo loco

Publicado por Nacho (6 intervenciones) el 05/02/2007 17:38:15
A ver si alguien me puede ayudar...

Es una operación de redondeo simple.
Ejecutando la aplicación con F5 en desarrollo, me dá un resultado, el correcto.
Compilo y ejecuto el ejecutable en el mismo pc, y me da otro resultado, el incorrecto.

Alguien sabe a que puede ser debido?

Gracias de Antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Me está volviendo loco

Publicado por rubens (12 intervenciones) el 05/02/2007 18:16:18
Me a sucedido un par de veces, ese tipo de errores, adjunta el codigo asi lo miro i lo intento depurar. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Me está volviendo loco

Publicado por Nacho (6 intervenciones) el 05/02/2007 19:18:02
El resultado de la operación es 0.965 al redondear a dos decimales me deja 0.96 en lugar de 0.97

Me he dado cuenta, que si el resultado fuera 0.9651, el redondeo le haría correcto, pero no puedo sumarle al resultado 0.0001 por que si el resultado de la operación fuera 0.9644 me subiría a 0.97 sin tener que hacerlo.

Por cierto, no uso la fórmula round, ya que siempre falla en casos como este.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Me está volviendo loco

Publicado por pako (52 intervenciones) el 05/02/2007 19:27:23
¿y qué fórmula usas, entonces?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Me está volviendo loco

Publicado por Nacho (6 intervenciones) el 05/02/2007 19:32:40
Esta, y ya digo en dasarrollo funciona ferpectamente

Public Function NE_REDONDEAR(NUMERO As Double, Optional DECIMALES As Integer) As Double

Dim dblPot As Double
Dim dblF As Double

If NUMERO < 0 Then dblF = -0.5 Else: dblF = 0.5
dblPot = 10 ^ DECIMALES
NE_REDONDEAR = Fix(NUMERO * dblPot * (1 + 1E-16) + dblF) / dblPot
' DBLNTOR = NUMERO A REDONDEAR
' intcntdec= numero de decimales

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Me está volviendo loco

Publicado por pako (52 intervenciones) el 05/02/2007 19:36:32
te complicas demasiado la vida:

numero = Format(numero, "#,##0.00")

sin funciones añadidas y va a funcionar siempre el redondeo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Me está volviendo loco

Publicado por Nacho (6 intervenciones) el 05/02/2007 20:11:01
Eso te devuelve un texto, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Me está volviendo loco

Publicado por pako (52 intervenciones) el 05/02/2007 20:25:04
El tipo que devuelve es el mismo que le hayas puesto en la declaración de la variable, si numero lo has declarado como Double, devolverá un double, si lo has declarado como String devolverá una cadena.
.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar