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#
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#
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.