Visual Basic - Problema con redondeo

Life is soft - evento anual de software empresarial
 
Vista:

Problema con redondeo

Publicado por Jimmy Torres Fonseca (134 intervenciones) el 18/12/2008 18:23:38
Hay alguna manera de evitar que con format no haya redondeo o por lo menos obtener solo dos decimales de un resultado pero no redondeado???

Ejemplo:

45,45 / 12,3 = 3,6951219512195121951219512195122

La idea es que tome solo dos decimales y el resultado sea este: 3,69

Pero lo que obtengo con funciones de formateo es: 3,70

No puedo redondear pues se trata de un programa contable...

Sugerencias???
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:Problema con redondeo

Publicado por Jimmy Torres Fonseca (134 intervenciones) el 18/12/2008 18:49:23
No me expliqué bien a esto se suma que debo usar format para poder dar este formato a un numero: 0.000,00

Para lo cual tengo esta funcion

Public Function FormatoDecimal(ByVal texto As String) As String
If texto = "" Then
texto = "0"
End If

If CDbl(texto) > 999 Then
FormatoDecimal = Format(CDbl(texto), "#0,000.00")
Else
FormatoDecimal = Format(CDbl(texto), "#0.00")
End If
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:Problema con redondeo

Publicado por igor (633 intervenciones) el 18/12/2008 21:29:55
Creo que esto es lo que buscas, verás que es bastante más sencillo.

Format(Int(Val(texto) * 100) / 100, "#,##0.00")

Lo primero es incluir Val() que nos convierte texto en número, si texto = "" Val devuelve 0.

Lo siguiente es utilizar Int(x*100)/100, obtenemos la parte entera del número pero como multiplicamos por 100 conservamos los 2 decimales. Luego dividimos para obtener el número original sin redondear y con los 2 decimales.

Por último con "#,##0.00" conseguimos todos los resultados deseados.

Con # podemos generar una máscara en la que se incluye el punto decimal SOLO si el número es mayor que 999.

Con 0.00 en cualquier caso incluirá los ceros donde queremos.
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:Problema con redondeo

Publicado por Jimmy Torres Fonseca (134 intervenciones) el 18/12/2008 22:15:28
Gracias Igor

Buena respuesta...

Saludos y Feliz Navidad!!
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