DUVIDA COM CALCULOS NO VB CASAS DECIMAIS

ITASOUZA 12/11/2013 09:30:38
#431014


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

KERPLUNK 12/11/2013 09:44:56
#431017
Tente assim:
txtValorAtualizado.Text = Resultado.ToString([Ô]R$ #,###.##[Ô])
OCELOT 12/11/2013 11:03:11
#431019
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.
ITASOUZA 12/11/2013 11:15:40
#431021
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
KERPLUNK 12/11/2013 11:42:46
#431026
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.
ITASOUZA 12/11/2013 12:16:43
#431029
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
Faça seu login para responder