EFETUAR CALCULOS VB

X16X 11/09/2009 14:15:56
#322630
Efetuando calculos aqui no VB juntamente com alguns componentes daqui do site, fiz uns testes.

txt1.Text = 23,02
txt2.text = 24,29

txt1.text * txt2.text = 559,1558

Usando CDBL()

CDbl(txt1.Text) * CDbl(txt2.Text) = 559,1558

Porem preciso trabalhar com 2 casas decimais, entao estou usando a funcao round()
Obs: com DDEC() obtenho o mesmo resultado.

round(CDbl(txt1.Text) * CDbl(txt2.Text)) = 559,16

Fiz os testes tanto com os componentes do VB textbox tanto com um componente de terceiro o resultado é sempre 559,16

Gostaria de saber se é correto ou posso ter problemas em usar a funcao round() ou ate mesmo um componente textbox de terceiro que me trago o resultado como 559,16 ou se isso é normal ?

Se caso nao for correto, qual seria a melhor maneira ? no caso cortar 2 casas decimais do valor 559,1558 ? ficando 559,15 ?

OBRIGADO.


EWERTONESTACIO 11/09/2009 14:23:59
#322634
Cara... o Round vai jogar seu favor para mais msm..... acho que para a o seu caso, vc deve usar a função Format


Tipo Valor

Dim valor as Double
Valor = 559,1558

valor = Format(valor,[Ô]###.0#[Ô])


Assim vc vai apenas mudar o formato do numero sem q haja mudanças no valor propriamente dito.


Espero ter ajudado.

X16X 11/09/2009 14:32:39
#322635
Opah!

Velhow com o format obtenho o mesmo resultado.

Format(CDbl(txt1.Text) * CDbl(txt2.Text), [Ô]###.0#[Ô]) = 559,16

Obs: Prestei atencao que a maioria dos componentes dao o mesmo resultado de 559,16.


Flw's.
ROBIU 11/09/2009 14:40:07
#322636
Seria assim:
Format(Int(CDbl(Txt1.Text) * CDbl(Txt2.Text) * 100) / 100, [Ô]###.0#[Ô])
X16X 11/09/2009 14:50:50
#322639
Putz, tem como diminuir pra ter o mesmo resultado ou algum componente que voce use que possa me indicar ?

No seu caso como voce trabalha com os calculos ?


Flw's
ROBIU 11/09/2009 15:19:55
#322643
O que o vb6 está fazendo é uma regra matemática: Quando arredondamos um número para uma quantidade menor de casas decimais, devemos verificar o arredondamento: Ex.:

1,496=1,50 pois a diferenca seria maior para 1,49
10,254=10,25 pois a diferença seria maior para 10,26
13,899=13,90, pois a diferença seria maior para 13,89...

Se o número anterior aos digitos exibidos for maior que 5 (a metade) arredonda para mais, se não for, arredonda para menos (ao eliminar os digitos)

Faça o teste no excel e verá que é assim. Quando formatar para menos digitos, ele vai arredondar
LEANDRO 11/09/2009 15:26:50
#322644
Cara é Simples.

ValorTotal = format(559,1558,[Ô]###,###,##0.0000[Ô])
ValorTotal = format(ValorTotal,[Ô]###,###,##0.00[Ô])

Tentai isso
PS: Só Substitua o ValorTotal pela sua variavel ou campo texto
X16X 14/09/2009 14:07:32
#322819
ROBIU,

Nos seus aplicativos , que é necessario usar calculos .. voce trabalha com a regra de arredondamento ?
ROBIU 14/09/2009 14:32:44
#322820
Sim. Esse é o padrão em todos os sistemas. O arredondamento diminui a diferença entre o valor sem o formato e o valor formatado. Além de ora arredondar para mais, ora arredondar para menos diminuindo tambem a diferença do valor total. Como eu já expliquei:

100,149=100,15 e não 100,14 pois a diferença para 100,15 é de 1 milésimo, já para 100,49 é de 9 milésimos. O arredondamento sempre considera a menor diferença.
Tópico encerrado , respostas não são mais permitidas