Maison >développement back-end >C++ >Comment puis-je supprimer les zéros de fuite des numéros décimaux sans perdre de précision?

Comment puis-je supprimer les zéros de fuite des numéros décimaux sans perdre de précision?

Susan Sarandon
Susan Sarandonoriginal
2025-01-24 08:36:10553parcourir

How Can I Remove Trailing Zeros from Decimal Numbers Without Losing Precision?

Retirer efficacement les zéros de fuite des décimales: une approche préservante de précision

De nombreux ensembles de données incluent des nombres décimaux avec des zéros de fin, un impact sur la présentation des données. Cet article montre comment supprimer ces zéros sans compromettre la précision numérique.

simplement utiliser String.Format("N0") est insuffisant, car il arrond les nombres, altérant potentiellement l'intégrité des données.

Une méthode supérieure utilise Decimal.GetBits(), accédant à la structure de bits sous-jacente de la décimale. La division de la décimale par la constante 1.000000000000000000000000000000000m modifie l'exposant, en supprimant efficacement les zéros de fuite superflus.

Cette technique est facilement implémentée à l'aide d'une méthode d'extension:

<code class="language-csharp">public static decimal Normalize(this decimal value)
{
    return value / 1.000000000000000000000000000000000m;
}</code>

Appliquer .ToString() à la décimale normalisée donne une représentation de chaîne sans zéros de fuite, tout en conservant la précision numérique d'origine. Par exemple:

<code class="language-csharp">1.200m.Normalize().ToString(); // Returns "1.2"</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn