ARREDONDAR CASAS DECIMAIS EM 0,10

WEBIER 12/11/2010 10:30:18
#357287
eu tenho o seguinte código:
valor = Format(Text1.Text, [Ô]##0.00[Ô])


meu cliente que que eu arrendonde os centavos assim:

1,86 ficará 1,90
1,84 ficará 1,90
1,72 ficará 1,80
1,77 ficará 1,80

ou seja, o valores ficaram sempre numero redondos nos centavos

como faço?
LUIZCOMINO 12/11/2010 11:31:39
#357296
ai cara montei pra vc aqui:


Private Sub Command1_Click()
Dim x, i, result As Integer

i = Format(Text1.Text, [Ô]000.00[Ô])

x = Right$((Format(i, [Ô]000.00[Ô])), 2)

If x > 10 Then

x = 0

End If

result = i + x

Label1 = Format(result, [Ô]##0.00[Ô])

End Sub
MARCELO.TREZE 12/11/2010 14:19:50
#357308
Um POG


Private Sub Command1_Click()
MsgBox ArredondaCentavos(Text1.Text)
End Sub


Function ArredondaCentavos(valor As String) As String
Dim Inteiro As Integer
Dim Centavos As Integer
Dim Dif As Integer
Inteiro = Mid(valor, 1, InStr(1, valor, [Ô],[Ô]) - 1)
Centavos = Right(valor, 2)
Dif = Centavos Mod 10
Centavos = Centavos + (10 - Dif)

If Centavos = 100 Then
Inteiro = Inteiro + 1
Centavos = 0
End If

ArredondaCentavos = Format(Inteiro & [Ô],[Ô] & Centavos, [Ô]##0.00[Ô])
End Function

WEBIER 13/11/2010 19:59:00
#357402
Esse código que o MARCELO_TREZE passou está danto erro em duas situações:

quando o valor é inteiro e quando o valor tem a casa decimal inteira.

exemplo:
Se o valor for 2,00 ele dar erro

exemplo:
Se o valor for 5,80 ela arredonda para 5,10

são esses os 2 erros q dar...

Como falo para corrigir esse problema?
FININHO 14/11/2010 04:27:50
#357412
Resposta escolhida
Private Sub Command1_Click()
MsgBox ArredondaCentavos(Text1)
End Sub

Function ArredondaCentavos(valor As String) As String
ArredondaCentavos = ((Int(valor * 10)) + IIf(Int((valor * 10)) <> (valor * 10), 1, 0)) / 10
End Function
RICARDO.RAPA 15/11/2010 00:47:38
#357454
Tem um jeito mais fácil veja o exemplo com a função criada:

Function Arredonda(nValor As Double, nDigitos As Integer) As Double
Arredonda = Int(nValor * (10 ^ nDigitos) + 0.5) / (10 ^ nDigitos)
End Function

Private Sub Command1_Click()
MsgBox Format(Arredonda([Ô]1,86[Ô], 1), [Ô]0.00[Ô])
End Sub
RICARDO.RAPA 15/11/2010 00:55:09
#357455
Veja se resolveu seu problema? Se Resolveu Encerre o tópico.

Valeu cara! Espero ter te ajudado de uma forma mais simples.
WEBIER 15/11/2010 09:28:04
#357464
a forma que o FININHO passou funcionou beleza...

sem querer abusar, mas abusando...

como eu faria arredondar de 0,05 e 0,05 centavos?

exemplo:

1,93 ficará 1,95
1,92 ficará 1,95
1,97 ficará 2,00
1,71 ficará 1,75
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas