Maison >développement back-end >C++ >Comment puis-je déterminer de manière fiable le nombre de décimales dans une valeur décimale ?

Comment puis-je déterminer de manière fiable le nombre de décimales dans une valeur décimale ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-15 12:52:45584parcourir

How Can I Reliably Determine the Number of Decimal Places in a Decimal Value?

Méthode de calcul des nombres décimaux qui n'est pas affectée par les paramètres culturels

Question :

Comment déterminer avec précision le nombre de décimales pour une valeur décimale sans être affecté par les paramètres régionaux ?

Réponse :

Comme indiqué dans la question, s'appuyer sur le fractionnement de chaînes pour extraire le nombre de décimales est sensible aux différents séparateurs décimaux locaux. Une approche plus fiable consiste à utiliser la méthode decimal.GetBits en combinaison avec des opérations sur les bits :

<code class="language-csharp">decimal argument = 123.456m;
int count = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2];</code>

Explication du code :

  1. decimal.GetBits : Cette méthode convertit une valeur décimale en un tableau de quatre entiers de 32 bits. Le troisième entier de ce tableau contient les informations d'échelle.
  2. BitConverter.GetBytes : Convertit un entier proportionnel en tableau d'octets.
  3. [2] : accède au troisième octet du tableau, qui indique l'échelle.
  4. count : Stocke le nombre de décimales sous forme d'entier.

Ainsi, cette méthode fournit des calculs précis de décimales pour toute valeur décimale, quelles que soient les différences culturelles.

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