Maison > développement back-end > Golang > Pourquoi `fmt.Printf` avec `%g` et les champs Largeur/Précision se comportent-ils de manière inattendue ?

Pourquoi `fmt.Printf` avec `%g` et les champs Largeur/Précision se comportent-ils de manière inattendue ?

Susan Sarandon
Libérer: 2024-10-26 17:02:02
original
364 Les gens l'ont consulté

Why Does `fmt.Printf` with `%g` and Width/Precision Fields Behave Unexpectedly?

fmt.Printf avec des champs de largeur et de précision dans %g se comporte de manière inattendue

Lorsque vous essayez de formater des flottants avec une largeur cohérente à l'aide de fmt.Printf (), il peut ne pas se comporter comme prévu lors de l'utilisation du spécificateur de format %g avec les champs de largeur et de précision.

Selon la documentation, le champ de précision pour %g définit le nombre total de chiffres, à l'exclusion de tout interligne. des zéros. Cependant, le spécificateur de format %g a des comportements uniques qui peuvent prêter à confusion.

Zéros non significatifs et comptage de chiffres :

  • Les zéros non significatifs dans la partie fractionnaire sont ne sont pas comptés comme des chiffres.
  • Les zéros après les chiffres non nuls sont comptés comme des chiffres.

Exemples :

  • fmt .Printf("%.4g", 0.12345) donne 0,1235.
  • fmt.Printf("%.4g", 0.012345) donne 0,01235.
  • fmt.Printf("%.4g" , 0,0012345) donne 0,001234.

Précision et largeur :

  • Le champ de largeur spécifie la largeur minimale, y compris les points décimaux ou les exposants.
  • Si le nombre de chiffres dépasse la largeur spécifiée, le champ de largeur sera ignoré.

Votre cas :

Dans votre exemple, vous avez utilisé .9g, qui spécifie une largeur minimale de 10 et un total de 9 chiffres. Cependant, les comportements suivants se produisent :

  • 0.060606060606060606 : nécessite 12 chiffres, donc la largeur minimale est ignorée.
  • 0.3333333333333333 : nécessite 11 chiffres, donc la largeur minimale est ignorée.
  • 0,05 et 0,4 : nécessitent 9 chiffres, qui sont inférieurs à la largeur minimale, ils sont donc complétés par des espaces.
  • 0,1818181818181818 : nécessite 9 chiffres après arrondi, la largeur minimale est donc ignorée.

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