ARREDONDAR CASAS DECIMAIS EM 0,10
eu tenho o seguinte código:
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?
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?
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
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
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
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?
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?
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
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
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
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
Veja se resolveu seu problema? Se Resolveu Encerre o tópico.
Valeu cara! Espero ter te ajudado de uma forma mais simples.
Valeu cara! Espero ter te ajudado de uma forma mais simples.
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
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
Tópico encerrado , respostas não são mais permitidas