Function Incremento(ByVal Cuota As Double, ByVal Inc As Integer) As Double
If Inc > 0 Then
If Cuota < 2 Then
Incremento = Incremento(Cuota + 0.01, Inc - 1)
ElseIf Cuota < 3 Then
Incremento = Incremento(Cuota + 0.02, Inc - 1)
ElseIf Cuota < 4 Then
Incremento = Incremento(Cuota + 0.05, Inc - 1)
ElseIf Cuota < 6 Then
Incremento = Incremento(Cuota + 0.1, Inc - 1)
ElseIf Cuota < 10 Then
Incremento = Incremento(Cuota + 0.2, Inc - 1)
ElseIf Cuota < 20 Then
Incremento = Incremento(Cuota + 0.5, Inc - 1)
ElseIf Cuota < 30 Then
Incremento = Incremento(Cuota + 1, Inc - 1)
ElseIf Cuota < 50 Then
Incremento = Incremento(Cuota + 2, Inc - 1)
ElseIf Cuota < 100 Then
Incremento = Incremento(Cuota + 5, Inc - 1)
ElseIf Cuota < 1000 Then
Incremento = Incremento(Cuota + 10, Inc - 1)
Else: Incremento = 1000
End If
End If
If Inc = 0 Then
Incremento = Cuota
End If
End Function
La funcion lo q hace es calcular el valor resultante de incrementar un valor pero teniendo en cuenta q el incremento es distinto según el tramo:
De 1,01 a 2 incremento de 0,01
De 2 a 3 incremento de 0.02
De 3 a 4 incremento de 0.05
De 4 a 6 incremento de 0.1
De 6 a 10 incremento de 0.2
De 10 a 20 incremento de 0.5
De 20 a 30 incremento de 1
De 30 a 50 incremento de 2
De 50 a 100 incremento de 5
y de 100 a 1000 incremento de 10 en 10.
P.ej.: Incremento(1,01;1) daría como resultado 1,02
.............
Incremento(1,01;98)= 1,99
Incremento(1,01;99) = 2
Incremento(1,01;100)= 2,02
.............
Incremento(1,01;148)= 2,98
Incremento(1,01;149)= 3
Incremento(1,01;150)= 3,05
...............
Incremento(1,01;168)= 3,95
Incremento(1,01;169)= 4
hasta aqui todo bien, pero resulta q si hago
Incremento(1,01;170) da como resultado 4,05 en vez de dar 4,10
de hecho si hago Incremento(4;1)=4,10 o
Incremento(3,95;2) = 4,10
Increible pero cierto!! Yo creo q es algo relativo a los tipos de datos pero ni idea, y cuanto más lo miro menos lo entiendo, si alguien lo ve, q me conteste.
He realizado la ejecucion paso a paso y aun he flipado más cuando he visto q la variable Cuota segun el depurador tenía un valor = 4 y sin embargo entraba por la comparativa "menor que 4"; increible pero cierto.
Perdonad por el tocho y gracias de antemano.