Código de Visual Basic - Redondear un calculo

Redondear un calculográfica de visualizaciones


Visual Basic

Publicado el 17 de Octubre del 2008 por Luis Emilio
10.963 visualizaciones desde el 17 de Octubre del 2008. Una media de 28 por semana
Función que permite solucionar problemas a la función round() en el redondeo de decimales. Si a la función round() le das expresiones complejas y combinas tipos de datos como integer, single y double, la función puede fallar.

Ejemplo de utilización:
nValor = redondear(val(txtbase.text)* val(txtporcentaje.txt),2)
en donde el producto val(txtbase.text)* val(txtporcentaje.txt) se rdondea a 2 decimales

Versión 1

Publicado el 17 de Octubre del 2008gráfica de visualizaciones de la versión: Versión 1
10.964 visualizaciones desde el 17 de Octubre del 2008. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Public Function Redondear(nNum As Double, Optional nDec As Integer) As Double
    Dim nEntero     As Double
    Dim nFraccion   As Double
    Dim sMantisa    As String
    Dim sUltima     As String
    Dim sNum        As String
    Dim sAux        As String
    Dim nVal        As Double
 
    Select Case nDec
        Case Is <= 0
            Redondear = Round(nNum, 0)
        Case Else
            nEntero = Fix(nNum)
            nFraccion = nNum - Fix(nNum)
            If nFraccion <> 0 Then
                sNum = Format(nFraccion, "0.000000000000000")
                sAux = Left(sNum, nDec + 1)
                sUltima = Mid(sNum, (nDec + 2), 1)
                sMantisa = Right(sNum, Len(sNum) - (nDec + 2))
                If Val(sMantisa) >= 5000000000000# Then
                    nVal = Val(sUltima) + 1
                    sUltima = CStr(nVal)
                End If
                If Val(sUltima) <> 10 Then
                    sNum = sAux & sUltima
                Else
                    sNum = Left(sAux, 2) & CStr(Val(Right(sAux, 1) + 1))
                End If
                nVal = Val(nEntero) + Val(sNum)
                Redondear = Round(nVal, nDec)
            Else
                Redondear = nNum
            End If
    End Select
End Function



Comentarios sobre la versión: Versión 1 (0)


No hay comentarios
 

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s1714