DUVIDA COM CALCULOS NO VB CASAS DECIMAIS
Amigos,
Estou fazendo um calculo onde eu tenho um valor e preciso mostra o calculo com as casas decimais corretas. Outro detalhe e que após selecionar varias vezes o programa fecha sozinho.
Agradeço
Veja como estou fazendo:
Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged
Dim Percentual As Decimal
Dim ValorDigitado As Decimal
Dim Resultado As Decimal
[ô]aqui estou mostrando o valor ex: 18,31
lbPercentual.Text = ComboBox1.SelectedValue.ToString()
[ô]aqui eu digito o valor ex: 100
ValorDigitado = Val(txtValorAtual.Text)
[ô]aqui eu pego o percentual ex; 18,31
Percentual = Val(ComboBox1.SelectedValue.ToString())
[ô]faço o calculo do valor
Resultado = (ValorDigitado * Percentual / 100) + ValorDigitado
[ô]mostro o valor mais o mesmo apresenta ex: R$ 118,00 deveria apresentar R$ 118,31
txtValorAtualizado.Text = Resultado.ToString([Ô]R$ #,###.00[Ô])
End Sub
Tente assim:
txtValorAtualizado.Text = Resultado.ToString([Ô]R$ #,###.##[Ô])
txtValorAtualizado.Text = Resultado.ToString([Ô]R$ #,###.##[Ô])
O problema é que você está usando o [Ô]Val[Ô] para converter de texto para número, no caso de [Ô]18,31[Ô] ele retorna apenas 18
Use sempre para converter valores o TipoDeDados.Parse, por exemplo no seu caso seria Decimal.Parse(valor)
[ô]aqui eu digito o valor ex: 100
ValorDigitado = Decimal.Parse(txtValorAtual.Text)
[ô]aqui eu pego o percentual ex; 18,31
Percentual = Decimal.Parse(ComboBox1.SelectedValue.ToString())
Único detalhe é que o Val permite converter textos para número mesmo que eles tenham valores inválidos, ele retorna o número que encontrar no começo do texto ou 0 caso o começo não seja numérico, nunca dando erro, já o Parse vai lançar uma exception caso o texto não seja um número válido.
Use sempre para converter valores o TipoDeDados.Parse, por exemplo no seu caso seria Decimal.Parse(valor)
[ô]aqui eu digito o valor ex: 100
ValorDigitado = Decimal.Parse(txtValorAtual.Text)
[ô]aqui eu pego o percentual ex; 18,31
Percentual = Decimal.Parse(ComboBox1.SelectedValue.ToString())
Único detalhe é que o Val permite converter textos para número mesmo que eles tenham valores inválidos, ele retorna o número que encontrar no começo do texto ou 0 caso o começo não seja numérico, nunca dando erro, já o Parse vai lançar uma exception caso o texto não seja um número válido.
Citação::
Tente assim:
txtValorAtualizado.Text = Resultado.ToString([Ô]R$ #,###.##[Ô])
Bom dia KERPLUNK
Muito grato pela ajuda, vou testar, sobre traduzir sistema desktop para web, seria usando C#? Poderia me manda um e-mail para conversarmos.
Agradeço
Sim, seria usando ASP.NET(possibilidade de uso de php ou até mesmo HTML puro) e codebehind em C#. Meu email está no meu perfil, clique no meu nome aqui do lado e me envie o que seu sistema faz, o que já tem, o que é problemático e o que você quer que seja online que eu dou uma analisada.
Ok, acho que deu certo, muito grato pela ajuda.
Sabe como eu faço a formatação do campo txtValorAtual para quando digitar ficar como currency?
Private Sub ComboBox1_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
Dim Percentual As Decimal
Dim ValorDigitado As Decimal
Dim Resultado As Decimal
[ô]aqui estou mostrando o valor ex: 18,31
Label3.Text = ComboBox1.SelectedValue.ToString()
[ô]aqui eu digito o valor ex: 100
If txtValorAtual.Text <> [Ô][Ô] Then
ValorDigitado = Decimal.Parse(txtValorAtual.Text)
[ô]aqui eu pego o percentual ex; 18,31
Percentual = Decimal.Parse(ComboBox1.SelectedValue.ToString())
[ô]faço o calculo do valor
Resultado = (ValorDigitado * Percentual / 100) + ValorDigitado
[ô]mostro o valor mais o mesmo apresenta ex: R$ 118,00 deveria apresentar R$ 118,31
txtValorAtualizado.Text = Resultado.ToString([Ô]R$ #,###.##[Ô])
End If
End Sub
Sabe como eu faço a formatação do campo txtValorAtual para quando digitar ficar como currency?
Private Sub ComboBox1_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
Dim Percentual As Decimal
Dim ValorDigitado As Decimal
Dim Resultado As Decimal
[ô]aqui estou mostrando o valor ex: 18,31
Label3.Text = ComboBox1.SelectedValue.ToString()
[ô]aqui eu digito o valor ex: 100
If txtValorAtual.Text <> [Ô][Ô] Then
ValorDigitado = Decimal.Parse(txtValorAtual.Text)
[ô]aqui eu pego o percentual ex; 18,31
Percentual = Decimal.Parse(ComboBox1.SelectedValue.ToString())
[ô]faço o calculo do valor
Resultado = (ValorDigitado * Percentual / 100) + ValorDigitado
[ô]mostro o valor mais o mesmo apresenta ex: R$ 118,00 deveria apresentar R$ 118,31
txtValorAtualizado.Text = Resultado.ToString([Ô]R$ #,###.##[Ô])
End If
End Sub
Faça seu login para responder