CONTROLAR ARREDONDAMENTO

USUARIO.EXCLUIDOS 21/08/2007 15:46:35
#231898
Por exemplo,tenho o numero 145.236, quero arredondar para duas casas, o vb ja manda para 145.24... + eu gostaria que ficasse no 145.23, eu queria controlar até quando ele arredonda para baixo, e depois de quanto para cima.

Em clipper tinha uma função assim, por exemplo, quero que até .6 arredonde para baixo, e de .7 para cima, para o proximo numero positivo.

Em vb tem algo parecido?

Obrigado.
USUARIO.EXCLUIDOS 22/08/2007 11:27:54
#232018
Eu somo ao numero 0,005 ao numero, depois multiplico por 100, pego a parte inteira do resultado, truncando o resto e divido então por 100 novamente.
Dai 145,236 vira 245,24 e
145,235 vira 145,23

USUARIO.EXCLUIDOS 22/08/2007 15:53:27
#232087
Amigo, eu não sei se tem função nativa do VB, mais eu tenho uma aqui... da uma olhada, ve se lhe atende:


Public Function Arredondar(Numero As Variant, CasasDecimais As Integer, ParaCimaAPartir As Integer) As Variant
Dim PosVirgula As Integer
Dim QtdCasas As Integer
Dim AntesVirgula As String
Dim DepoisVirgula As String
Dim DepoisVirgulaAux As String

PosVirgula = InStr(1, Numero, ",")

If PosVirgula = 0 Then
Numero = Numero & "," & String(CasasDecimais, "0")
Arredondar = Numero
Exit Function
End If

AntesVirgula = Left(Numero, PosVirgula - 1)
DepoisVirgula = Mid(Numero, PosVirgula + 1, Len(Numero))
QtdCasas = Len(DepoisVirgula)

If QtdCasas <= CasasDecimais Then
DepoisVirgula = DepoisVirgula & String(Abs(CasasDecimais - QtdCasas), "0")
Else
DepoisVirgulaAux = DepoisVirgula
DepoisVirgula = Mid(DepoisVirgulaAux, 1, QtdCasas - 1)

If Val(Mid(DepoisVirgulaAux, CasasDecimais + 1, 1)) >= ParaCimaAPartir Then
DepoisVirgula = Mid(DepoisVirgula, 1, Len(DepoisVirgula) - 1) & Mid(DepoisVirgula, Len(DepoisVirgula), 1) + 1
End If
End If


Arredondar = AntesVirgula & "," & DepoisVirgula
End Function

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