Maison > développement back-end > Golang > le corps du texte

Comment fmt.Printf gère-t-il les zéros non significatifs lors de l'utilisation de la largeur et de la précision pour les valeurs à virgule flottante ?

Linda Hamilton
Libérer: 2024-10-26 02:05:28
original
651 Les gens l'ont consulté

  How Does fmt.Printf Handle Leading Zeros When Using Width and Precision for Floating-Point Values?

fmt.Printf Différence de syntaxe de largeur et de précision

L'utilisation de fmt.Printf avec des champs de largeur et de précision pour les valeurs à virgule flottante peut être déroutant en raison d’une divergence dans la documentation. L'instruction :

"Pour les valeurs à virgule flottante, width définit la largeur minimale du champ et la précision définit le nombre de places après la virgule, le cas échéant, sauf que pour %g/%G, elle définit le total nombre de chiffres."

Bien que grammaticalement correct, cela conduit à une ambiguïté car "cela" fait référence à la précision plutôt qu'à la largeur. Cela peut entraîner un comportement de formatage inattendu.

Précision des notations à virgule flottante

Considérez les valeurs à virgule flottante suivantes :

123.45
12312.2
1.6069
0.6069
0.0006069
Copier après la connexion

Quand en utilisant fmt.Printf("%.4g"), le résultat est :

123.5
1.231e+04
1.607
0.6069
0.0006069
Copier après la connexion

Observez que le champ de précision (.4) spécifie le nombre total de chiffres, à l'exclusion des points décimaux et des exposants. Par conséquent, même si les deux dernières valeurs comportent des zéros non significatifs, elles comptent toujours comme des chiffres et ne sont pas tronquées.

Spécifications de largeur

D'un autre côté, le champ de largeur (par exemple, g) spécifie la largeur minimale du champ, y compris les points décimaux et les exposants. Si la valeur formatée dépasse cette largeur, elle ne sera pas tronquée. Cependant, les zéros non significatifs ne sont pas comptés dans la largeur tant qu'il n'y a pas quatre zéros non significatifs ou plus.

Exemple

Dans votre cas, la chaîne de format .9g spécifie une largeur minimale de 10 et un nombre total de chiffres de 9, à l'exclusion des zéros non significatifs. Le formatage résultant est :

0.0606060606060606: 9 digits, 12 width
0.3333333333333333: 9 digits, 11 width
0.05: 3 digits, 10 width (padded with spaces)
0.4: 2 digits, 10 width (padded with spaces)
0.1818181818181818: 9 digits (rounded), 11 width
Copier après la connexion

Cela démontre l'interaction entre les champs de précision et de largeur et comment les zéros non significatifs peuvent affecter le formatage final.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!