CALCULO DE PORCENTAGEM EM TEXTBOX

SANROMAN 13/10/2013 15:46:13
#429979
Olá pessoal

Tenho um campo textbox que mostra o valor de um cálculo de porcentagem. Uso a seguinte fórmula:

txtPrecoVista.Text = (txtPrecoCusto.Text * (Me.txtLucroVista.Text / 100)) + txtPrecoCusto.Text

Se coloco no campo txtPrecoCusto o valor de R$ 10,00 e no campo txtLucroVista o valor de 100% ele retorna no campo txtPrecoVista o valor de R$ 100,00, perfeito né. Só que se coloco um valor com casa decimal em porcentagem tipo 22,22% ele apenas soma os valores dos campos e retorna R$ 32,22.

Todos os campos citados são do tipo decimal com duas casa depois da virgula.

Não faço a menor ideia do porque, já que com valores inteiros ele faz a operação correta.

Espero que possam me ajudar.

Um abraço
NILSONTRES 13/10/2013 23:22:16
#429983
Citação:

Se coloco no campo txtPrecoCusto o valor de R$ 10,00 e no campo txtLucroVista o valor de 100% ele retorna no campo txtPrecoVista o valor de R$ 100,00, perfeito né


Esta confuso, pois vc já tem o valor do lucro.
Sendo assim é só somar não existe percentual nessa historia.
txtPrecoVista.Text = txtPrecoCusto.Text + Me.txtLucroVista.Text

Ou explique melhor.
SANROMAN 14/10/2013 09:28:59
#429994
Bom dia Nilsontres

O valor do campo txtPrecoVista e gerado através de uma formula, como segue:

txtPrecoVista.Text = (txtPrecoCusto.Text * (Me.txtLucroVista.Text / 100)) + txtPrecoCusto.Text

Se uso valor inteiro no campo txtLucroVista o retorno e correto, mas se uso valores fracionados (Ex. 30,05%) retorna o valor somado dos campos txtPrecoCusto e txtPrecoVista, e isso que tá me deixando confuso.
Com valor inteiro no campo txtLucroVista funciona perfeitamente, mas com valores fracionados não.
Espero ter me feito entender.

Tenha um lindo dia



GANDA.NICK 14/10/2013 12:45:19
#430005
Resposta escolhida
Olá,


você esta a receber esse valores decimais com ponto (.) ou virgula (,) nas textbox[ô]s?

penso que poderá ter a ver com isso e suas definições regionais..

experimente este exemplo, que esta recebendo virgula(,)

Option Explicit On
Option Strict On

Imports System.Globalization

Public Class Form1

Dim nfi As NumberFormatInfo = New Globalization.CultureInfo([Ô]pt-BR[Ô], False).NumberFormat

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
[ô] Não precisa disto porque já é a vigula
[ô]nfi.NumberDecimalSeparator = [Ô],[Ô]

Dim precoVista As Decimal
Dim precoCusto As Decimal = Decimal.Parse(txtPrecoCusto.Text, nfi)
Dim lucroVista As Decimal = Decimal.Parse(txtLucroVista.Text, nfi)

precoVista = precoCusto * (lucroVista / 100) + precoCusto

txtPrecoVista.Text = precoVista.ToString([Ô]C[Ô], nfi)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

[ô] botão 2 mostra o separedor decimal
Dim decimalSeparator As String = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
MsgBox(decimalSeparator)
End Sub
End Class



Poste aí se ajudou no problema


[Ô]Se coloco no campo txtPrecoCusto o valor de R$ 10,00 e no campo txtLucroVista o valor de 100% ele retorna no campo txtPrecoVista o valor de R$ 100,00, perfeito né.[Ô]

não percebo como isso possa dar R$ 100,00
SANROMAN 14/10/2013 13:31:25
#430007
Boa Tarde Ganda_Nick

Quem sabe, sabe, meus parabéns.

Sem a ajuda de pessoas como você nao sei o que seria de principiantes como eu.

Ficou perfeito, os valores inteiros e fracionados funcionam corretamente.

OBS. Também não consigo perceber como poderia dar R$ 100,00

O resultado correto é R$ 20,00, um errinho de digitação. kkkkk

Novamente meus parabéns.
Tópico encerrado , respostas não são mais permitidas