Formatage des doubles en C#
Lors de la sortie des doubles, C# les arrondit automatiquement à 15 chiffres significatifs avant d'appliquer un formatage. Cela peut entraîner des écarts entre la sortie formatée et la valeur réelle du double.
Problème avec String.Format :
La méthode String.Format en C# n'affecte que l’affichage du numéro formaté. Il n'ajuste pas la précision de la valeur double sous-jacente. Par conséquent, String.Format("{0:F20}", i) affichera 20 décimales, mais la valeur réelle du double peut encore avoir été arrondie à 15 décimales en interne.
Exemple :
Considérons le code suivant :
double i = 10 * 0.69; Console.WriteLine(String.Format(" {0:F20}", i));
La sortie sera 6.90000000000000000000 , même si la valeur réelle de i est plus proche de 6.899999999999999946709.
Solution :
Pour afficher la valeur décimale exacte d'un double, vous pouvez utiliser Jon Skeet's Classe DoubleConverter. Cette classe possède une méthode ToExactString qui renvoie la représentation décimale exacte d'un double. Vous pouvez ensuite formater la chaîne selon vos besoins.
Par exemple :
double i = 10 * 0.69; Console.WriteLine(DoubleConverter.ToExactString(i));
Cela affichera 6.89999999999999946709294817992486059665679931640625 , qui est la représentation décimale exacte de 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!