Me di cuenta de que .NET tiene un comportamiento funky/no intuitiva cuando se trata de decimales y ceros finales.Decimal - truncate ceros finales
0m == 0.000m //true
0.1m == 0.1000m //true
pero
(0m).ToString() == (0.000m).ToString() //false
(0.1m).ToString() == (0.1000m).ToString() //false
que sé acerca de la necesidad de cumplir con el estándar ECMA CLI. Sin embargo, me gustaría saber si hay una forma incorporada de truncar los ceros finales para un valor decimal sin pasar por la representación de cadena (.ToString ("G29") y el truco de analizar analizar funcionaría, pero no es una solución rápida ni elegante)?
¿Alguna idea? Muchas gracias.
Hmmm ... estoy pensando en algo relacionado con 'decimal.GetBits' y la aritmética de 96 bits, pero no es sencillo. –
Consulte http://stackoverflow.com/questions/1584314/ para obtener una pregunta relacionada. Una de las respuestas da el truco de dividir entre 1.000 ... 0000m para eliminar efectivamente los ceros finales (presumiblemente porque el exponente "ideal" para un cociente x/y es la diferencia de los exponentes de xey). Sin embargo, es sorprendente que no haya un método de "normalización". –