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
Quand en utilisant fmt.Printf("%.4g"), le résultat est :
123.5 1.231e+04 1.607 0.6069 0.0006069
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
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!