C# · Essencial · Inglês · Técnico
decimal
Tipo numérico de 128 bits com base 10, de alta precisão decimal. É o indicado para valores monetários porque representa 0,1 exatamente, ao contrário de float e double.
Onde usar
Aparece em código financeiro, com literais com sufixo m, como 19.90m. É mais lento que double e usa mais memória, mas evita erros de arredondamento em somas de dinheiro.
Em código
double d = 0.1 + 0.2;
decimal m = 0.1m + 0.2m;
Console.WriteLine(d == 0.3); // False
Console.WriteLine(m == 0.3m); // TrueExemplos
Use decimal for money, never double.
Use decimal para dinheiro, nunca double.
Don't forget the m suffix on the literal.
Não esqueça o sufixo m no literal.
Cuidado
Não esqueça o sufixo m: o literal 0.1 é double e não compila numa atribuição a decimal. Também não misture decimal com double sem conversão explícita.
Antônimos
double