EFETUAR CALCULOS VB
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.
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.
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.
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.
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.
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.
Seria assim:
Format(Int(CDbl(Txt1.Text) * CDbl(Txt2.Text) * 100) / 100, [Ô]###.0#[Ô])
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
No seu caso como voce trabalha com os calculos ?
Flw's
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
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
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
ValorTotal = format(559,1558,[Ô]###,###,##0.0000[Ô])
ValorTotal = format(ValorTotal,[Ô]###,###,##0.00[Ô])
Tentai isso
PS: Só Substitua o ValorTotal pela sua variavel ou campo texto
ROBIU,
Nos seus aplicativos , que é necessario usar calculos .. voce trabalha com a regra de arredondamento ?
Nos seus aplicativos , que é necessario usar calculos .. voce trabalha com a regra de arredondamento ?
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.
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