Como somar KG ?

1 resposta
programaçãocsharpnet
D

Preciso que um valor decimal:

decimal A= 1.25;  //( preco)
decimal B= 1,50;  //(QTD)

C = A * C = 1,875

preciso que ele retorne somente o resultado com 2 casas decimais,

C = 1,87

alguém sabe como me ajudar?

Observação: estou programando em C#

1 Resposta

D

Não existe nada pronto:

decimal A = 1.25m;  //( preco)
decimal B = 1.33m;  //(QTD)

decimal C =  A * B;

//valor sem formatação
System.Console.WriteLine(C);

string[] itens = C.ToString().Split(',');
if (itens.Length > 1)
{

     C = decimal.Parse(string.Format("{0},{1}", 
            itens[0], 
           (itens[1].Length > 2) ? itens[1].Substring(0,2) : itens[1]));
}

Para facilitar você deve criar um método de extensão, como?

public static class Utils
{
        public static decimal ToFormatted(this decimal value, int decimals)
        {
            string[] itens = value.ToString().Split(',');
            if (itens.Length > 1)
            {

                return decimal.Parse(string.Format("{0},{1}",
                    itens[0],
                    (itens[1].Length > decimals) ? itens[1].Substring(0, decimals) : itens[1]));
            }
            return value;
        }
}

E ai no código use assim:

decimal A = 1.25m;  //( preco)
decimal B = 1.055m;  //(QTD)

decimal C =  A * B;

System.Console.WriteLine(C.ToFormatted(2));

ou

decimal A = 1.25m;  //( preco)
decimal B = 1.055m;  //(QTD)

decimal C =  (A * B).ToFormatted(2);

System.Console.WriteLine(C);

Observação: Esse código pode ter alguns problemas se a culture for diferente de pt-BR, tendo que mudar de virgula para ponto, mas, deve funcionar na maioria dos casos.

Criado 18 de agosto de 2016
Ultima resposta 18 de ago. de 2016
Respostas 1
Participantes 2