Ho notato che .NET ha un comportamento funky/non intuitivo quando si tratta di decimali e zeri finali.Decimale - troncare gli zero finali
0m == 0.000m //true
0.1m == 0.1000m //true
ma
(0m).ToString() == (0.000m).ToString() //false
(0.1m).ToString() == (0.1000m).ToString() //false
so di necessità di rispettare lo standard ECMA CLI. Tuttavia vorrei sapere se esiste un modo incorporato per troncare gli zero finali per un valore decimale senza passare attraverso la rappresentazione di stringhe (.ToString ("G29") e il trucco back-up dovrebbe funzionare, ma non è né una soluzione rapida né elegante)?
Qualche idea? Grazie mille.
Hmmm ... Sto pensando a qualcosa che coinvolge 'decimal.GetBits' e aritmetica a 96 bit, ma non semplice. –
Vedere http://stackoverflow.com/questions/1584314/ per una domanda correlata. Una delle risposte dà il trucco di dividere per 1.000 .... 0000m per rimuovere efficacemente gli zero finali (presumibilmente perché l'esponente 'ideale' per un quoziente x/y è la differenza degli esponenti di x e y). È sorprendente che non esista un metodo 'normalize', comunque. –