ARREDONDAR DECIMAIS

USUARIO.EXCLUIDOS 06/01/2005 10:39:09
#58957
no vb existe alguma função interna que Arredonde numeros do Tipo:

103,83 para 103,85
ou
103,82 para 103,80
ou
103,86 para 103,90

existe alguma funcao interna ou externa ?
JCHARLES 06/01/2005 10:57:59
#58959
Clayton,

O VB tem a função Round().

Mas, não conheço nenhuma função que faça arredondamento para números decimais intermediários, como no seu primeiro exemplo: 103, 83 para 103,85. Nesta caso, a função Round(103.83, 1) devolveria 103,8. Se precisar desse tipo de arredondamento, têm-se que desenvolver uma função propria.
RXGOMES 06/01/2005 11:05:04
#58961
Resposta escolhida
Segue um exemplo, não sei se é o ideal, mas funciona

Sub a()
Dim a As Double
a = 100.32

If CInt(Right(a, 1)) >= 5 Then
a = Format(Round(a, 1), "0.00")
ElseIf CInt(Right(a, 1)) >= 3 Then
a = a + (0.05 - (CInt(Right(a, 1)) / 100))
Else
a = a - (CInt(Right(a, 1)) / 100)
End If
MsgBox Format(a, "0.00")
End Sub


USUARIO.EXCLUIDOS 06/01/2005 11:06:16
#58962
Clayton assim funciona. Coloque no lostfocus do text ou em qq outro lugar e teste.

Text1.Text = Format(Text1.Text, "#0")
USUARIO.EXCLUIDOS 06/01/2005 15:53:43
#59038
blz brigado a todos

RxGomes -- Vou usar ela
USUARIO.EXCLUIDOS 06/01/2005 17:01:12
#59059
Só um comentario em cima da função

caso demais usuarios queiram usar

alterar de
If CInt(Right(a, 1)) >= 5 Then 

Para:
If CInt(Right(a, 1)) >= 6 Then 

Citação:

pois se não qdo um Numero Decimar terminar em 5 será arredondado para ZERO



De
 Dim a As Double 

Para
 Dim a As String 

Citação:

Caso vc passe o valor por Parametro ex: vvc ira passar 10,10
a funcao entendera q o ultimo digito é 1 e arredondará para baixo , sendo q na verdade o ultimo digito é ZERO q tá oculto



e só para garantir coloque na primeira linha da função
 a = Format(a, "0.00") 

Citação:

só para garantir q irá trabalhar com 2 casas decimais




Agradeçam tb ao nosso amigo RxGomes, por ter postado essa função

[S20][S20][S20][S20][S20][S20]
Tópico encerrado , respostas não são mais permitidas