PORCENTAGEM
ola pessoal
preciso tirar uma duvida
estou tentando fazer um calculo de lucro, só que o calculo esta me retornando errado
já tentei alterar o tipo de variavel mais não tenho sucesso.
o que preciso que seja calculado o valor da compra x a porcentagem
que o retorno da venda
alguma ideia que possa ajudar?
preciso tirar uma duvida
estou tentando fazer um calculo de lucro, só que o calculo esta me retornando errado
já tentei alterar o tipo de variavel mais não tenho sucesso.
o que preciso que seja calculado o valor da compra x a porcentagem
que o retorno da venda
double SlgPorcento = Convert.ToDouble(txtValorMarkup.Text.Replace("%", ""));
double DblValMargem = Convert.ToDouble(txtPrecoCompra.Text) * (SlgPorcento) / 100;
double DblValTotal = Convert.ToDouble(DblValMargem) + Convert.ToDouble(txtPrecoCompra.Text);
txtPrecoVenda.Text = DblValTotal.ToString();
DblValTotal = 0;
alguma ideia que possa ajudar?
double SlgPorcento = Convert.ToDouble(txtValorMarkup.Text.Replace("%", "")) / 100;
double preco_compra = Convert.ToDouble(txtPrecoCompra.Text);
double preco_venda = preco_compra * (1 + SlgPorcento);
double lucro = preco_venda - preco_compra;
Citação::
double SlgPorcento = Convert.ToDouble(txtValorMarkup.Text.Replace("%", "")) / 100;
double preco_compra = Convert.ToDouble(txtPrecoCompra.Text);
double preco_venda = preco_compra * (1 + SlgPorcento);
double lucro = preco_venda - preco_compra;
ele disparou pirou rsrsrs.
anteriormente estava dando o problema na mascara da moeda, parece que a mascara não está diferenciando o valor depois do ponto. porque quando faço em modo manual ele calcula perfeitamente.
public static void Moeda( TextBox txt)
{
string n = string.Empty;
double v = 0;
try
{
n = txt.Text.Replace(",", "").Replace(",", "").Replace("%","");
if (n.Equals(""))
n = "";
n = n.PadLeft(3, "0");
if (n.Length > 3 & n.Substring(0, 1) == "0")
n = n.Substring(1, n.Length - 1);
v = Convert.ToDouble(n) / 100;
txt.Text = string.Format("{0:N}", v);
txt.SelectionStart = txt.Text.Length;
}
catch (Exception erro)
{
MessageBox.Show(erro.Message);
}
}
Me de exemplos com números do que voce precisa que mais tarde posto a solução aqui.
veja
que acontece é que se eu compro uma bala por 0,10 a unidade preciso aplicar a porcentagem para ter o valor de venda
neste caso seria assim
compra 0.10
markup 56,55%
o retorno para venda = 0,156
como te comentei, existe a formatação da moeda quando o valor passa pela formatação ai arredonda.
que acontece é que se eu compro uma bala por 0,10 a unidade preciso aplicar a porcentagem para ter o valor de venda
neste caso seria assim
compra 0.10
markup 56,55%
o retorno para venda = 0,156
como te comentei, existe a formatação da moeda quando o valor passa pela formatação ai arredonda.
Eu havia considerado o valor de porcentagem como sendo inteiro, daàtinha dividido por 100 para transformá-lo em decimal. Se a porcentagem já está em decimal, como o 0,01 no campo markup, então não é necessário dividi-lo por 100 como eu fiz. Lembre-se que 0,01 corresponde a 1% e que 0,1 correspondem a 10%. Daàficaria assim:
A formatação vai arredondar porque a quantidade de casas para cobrir os decimais está menor do que as do valor original. Nesse teu exemplo o valor de saÃÂda é 0,15655, e, se a formatação for com apenas 3 casas decimais, ele pode virar 0,156 ou 0,157; sendo um problema nas duas formas.
double SlgPorcento = Convert.ToDouble(txtValorMarkup.Text.Replace("%", ""));
double preco_compra = Convert.ToDouble(txtPrecoCompra.Text);
double preco_venda = preco_compra * (1 + SlgPorcento);
A formatação vai arredondar porque a quantidade de casas para cobrir os decimais está menor do que as do valor original. Nesse teu exemplo o valor de saÃÂda é 0,15655, e, se a formatação for com apenas 3 casas decimais, ele pode virar 0,156 ou 0,157; sendo um problema nas duas formas.
Citação::
Eu havia considerado o valor de porcentagem como sendo inteiro, daàtinha dividido por 100 para transformá-lo em decimal. Se a porcentagem já está em decimal, como o 0,01 no campo markup, então não é necessário dividi-lo por 100 como eu fiz. Lembre-se que 0,01 corresponde a 1% e que 0,1 correspondem a 10%. Daàficaria assim:double SlgPorcento = Convert.ToDouble(txtValorMarkup.Text.Replace("%", ""));
double preco_compra = Convert.ToDouble(txtPrecoCompra.Text);
double preco_venda = preco_compra * (1 + SlgPorcento);
A formatação vai arredondar porque a quantidade de casas para cobrir os decimais está menor do que as do valor original. Nesse teu exemplo o valor de saÃÂda é 0,15655, e, se a formatação for com apenas 3 casas decimais, ele pode virar 0,156 ou 0,157; sendo um problema nas duas formas.
percebi agora, obrigado.
Tópico encerrado , respostas não são mais permitidas