Remoção de zeros não significativos em valores decimais em .NET
Quando utilizamos valores do tipo decimal que vêm do SQL Server, o nº de casas decimais definido no SQL Server acompanha o valor nas variáveis de tipo de dados Decimal, o que muitas vezes não é conveniente. Se é um facto que a formatação de valores numéricos para string permite dar conta desta situação, utilizando por exemplo a máscara de formatação 0.#####, hoje necessitei de remover os zeros não significativos à direita do ponto decimal de uma variável do tipo decimal. Como não encontrei feito aquilo que pretendia, criei o seguinte extension method:
public static decimal RemoveTraillingZeros(this decimal number)
{
return decimal.Parse(number.ToString("0.#######", new System.Globalization.CultureInfo("en-US")), new System.Globalization.CultureInfo("en-US"));
}
A opção pela cultura en-US não influencia o resultado, o importante é que a conversão em string e de novo em decimal seja feita sobre a mesma cultura para evitar problemas… culturais!
Para quem necessitar de fazer a mesma operação mas a nível do SQL Server, há UDFs na internet que o permitem fazer.