Maison >développement back-end >Golang >Comment le champ de précision fonctionne-t-il réellement avec « %g » dans « fmt.Printf » ?
La documentation des champs de formatage de fmt.Printf pour les valeurs à virgule flottante indique que :
"Pour les valeurs à virgule flottante, la largeur définit la largeur minimale du champ
et la précision définit le nombre de places après la virgule, si
approprié, sauf que pour %g/%G, il définit le nombre total de chiffres."
La partie déroutante réside dans l'utilisation de "it" dans la dernière phrase. Il fait en fait référence à la « précision », et non à la « largeur ».
Contrairement à l'intuition selon laquelle %.9g devrait produire un total de 9 chiffres significatifs, il ne considère en fait que les chiffres après la virgule décimale.
Par exemple, 123456.789 sera formaté en 123.4e 03 car %.9g tronque efficacement tous les zéros non significatifs.
À l'inverse, 0,0000012345 sera formaté en 1,2345. e-06 car %.9g prend en compte tous les chiffres significatifs après la virgule décimale.
Le champ width spécifie la largeur minimale de toute la chaîne formatée, y compris la décimale point et exposant (le cas échéant).
Le champ de précision, comme décrit ci-dessus, définit le nombre de chiffres significatifs après la virgule décimale.
Pour %g, le champ de précision remplace le champ de largeur . Cependant, si la chaîne formatée dépasse la largeur spécifiée, elle s'étendra au-delà de la largeur spécifiée.
Rappelez que l'exemple implique le formatage des valeurs à virgule flottante suivantes en utilisant .9g :
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!