I suggest that code for that:
public class MOEDA
{
public int umavez = 0;
public string Calcular(string valor1, string valor2, int operacao)
{
string saida = "";
int total = 0;
int val1, val2;
valor1 = valor1.Replace("$", ""); valor2 = valor2.Replace("$", "");
valor1 = valor1.Replace(".", ""); valor1 = valor1.Replace(",", "");
valor2 = valor2.Replace(".", ""); valor2 = valor2.Replace(",", "");
valor1 = valor1.Trim(); valor2 = valor2.Trim();
int.TryParse(valor1, out val1); int.TryParse(valor2, out val2);
int calcular = 0;
if (operacao == 1) { calcular = 1; }
if (operacao == 2) { calcular = 2; }
if (operacao <= 0) { calcular = 3; }
if (operacao == 4) { calcular = 4; }
if (operacao == 5) { calcular = 5; }
switch (calcular)
{
case 1://soma
total = val1 + val2;
break;
case 2://multiplicar
val2 *= operacao;
total = val1 + val2;
break;
case 3://subtrair
if (val1 == val2)
{
total = val1 - val2;
}
else
{
if (val1 > val2)
{
total = val1 - val2;
}
else
{
if (val1 < val2)
{
total = val2 - val1;
}
}
}
break;
case 4://porcentagem
float porcentagem = ((float)val2 / 100) * val1;
total = val1 + (int)porcentagem;
break;
case 5://divisao
float v = (float)val1 / (float)val2;
total = (int)v;
break;
}
saida = total.ToString();
saida = FormataMoeda(saida);
return saida;
}
string FormataMoeda(string corpo)
{
string set = corpo.Replace("$ ", "");
if (set.Length < 22)
{
set = set.Replace("$ ", "");
set = set.Replace(".", "");
set = set.Replace(",", "");
switch (set.Length)
{
case 3:
set = "$ " + set.Substring(0, 1) + "," + set.Substring(1, 2);
umavez = 1;
break;
case 4:
set = "$ " + set.Substring(0, 2) + "," + set.Substring(2, 2);
umavez = 1;
break;
case 5:
set = "$ " + set.Substring(0, 3) + "," + set.Substring(3, 2);
umavez = 1;
break;
case 6:
set = "$ " + set.Substring(0, 1) + "." + set.Substring(1, 3) + "," + set.Substring(4, 2);
umavez = 1;
break;
case 7:
set = "$ " + set.Substring(0, 2) + "." + set.Substring(2, 3) + "," + set.Substring(5, 2);
umavez = 1;
break;
case 8:
set = "$ " + set.Substring(0, 3) + "." + set.Substring(3, 3) + "," + set.Substring(6, 2);
umavez = 1;
break;
case 9:
set = "$ " + set.Substring(0, 1) + "." + set.Substring(1, 3) + "." + set.Substring(4, 3) + "," + set.Substring(7, 2);
umavez = 1;
break;
case 10:
set = "$ " + set.Substring(0, 2) + "." + set.Substring(2, 3) + "." + set.Substring(5, 3) + "," + set.Substring(8, 2);
umavez = 1;
break;
case 11:
set = "$ " + set.Substring(0, 3) + "." + set.Substring(3, 3) + "." + set.Substring(6, 3) + "," + set.Substring(9, 2);
umavez = 1;
break;
case 12:
set = "$ " + set.Substring(0, 1) + "." + set.Substring(1, 3) + "." + set.Substring(4, 3) + "," + set.Substring(7, 3) + "," + set.Substring(10, 2);
umavez = 1;
break;
case 13:
set = "$ " + set.Substring(0, 2) + "." + set.Substring(2, 3) + "." + set.Substring(5, 3) + "." + set.Substring(8, 3) + "," + set.Substring(11, 2);
umavez = 1;
break;
case 14:
set = "$ " + set.Substring(0, 3) + "." + set.Substring(3, 3) + "." + set.Substring(6, 3) + "." + set.Substring(9, 3) + "," + set.Substring(12, 2);
umavez = 1;
break;
///-------------------------------------- Não reconhece 15 caracteres
case 15:
set = "$ " + set.Substring(0, 1) + "." + set.Substring(1, 3) + "." + set.Substring(4, 3) + "." + set.Substring(7, 3) + "." + set.Substring(10, 3) + "," + set.Substring(13, 2);
umavez = 1;
break;
}
}
//-------------------------------------- Não reconhece 15 caracteres
//-------------------------------------- Não reconhece 15 caracteres
return set;
}
//---------------------------------------
//---------------------------------------
}
Decimal is the easy-to-work field. O Microsoftly correct is: money and smallmoney http://msdn.microsoft.com/pt-br/library/ms179882.aspx
– Dorathoto
Decimal for sure.
– Matheus Miranda