Maison >développement back-end >C++ >Pourquoi le double formatage C# et les valeurs du débogueur diffèrent-ils ?

Pourquoi le double formatage C# et les valeurs du débogueur diffèrent-ils ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 22:03:45237parcourir

Why Do C# Double Formatting and Debugger Values Differ?

Que se passe-t-il lors du formatage double en C

Lors du formatage double pour la sortie en C#, il est important de noter que la sortie diffère de la valeur affichée dans le débogueur. Voici pourquoi :

Le problème sous-jacent

Contrairement au C, où la précision de sortie est déterminée par le spécificateur de format, C# arrondit tous les doubles à 15 chiffres décimaux significatifs avant d'appliquer un formatage. Cet écart se produit car C# donne la priorité à l'exactitude par rapport à la précision demandée.

Comportement du débogueur de Visual Studio

Le débogueur de Visual Studio affiche directement la représentation binaire interne des doubles, d'où l'écart avec la sortie formatée.

Solution : formatage personnalisé

Bien que C# manque de solution intégrée pour un formatage décimal exact, vous pouvez construire manuellement une représentation sous forme de chaîne à partir des données binaires internes. Vous pouvez également utiliser des bibliothèques tierces comme DoubleConverter de Jon Skeet, qui fournit une méthode ToExactString pour une sortie décimale précise.

Exemple

Utilisation de DoubleConverter pour formater un double à 20 décimales :

double i = 10 * 0.69;
Console.WriteLine(DoubleConverter.ToExactString(i));

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