Question

Alors que j'utilise %g comme spécificateur de format dans printf(), parfois il arrondit jusqu'à 2 places après le point décimal, parfois JUSQU'A 3 places, someimes jusqu'à 4 places ... comment il le fait?

En fait, où nous devrions utiliser %g au lieu de %f ou %e pour les nombres à virgule flottante?

Était-ce utile?

La solution

Le spécificateur de format %g fait son arrondi comme %f ferait, mais si %f entraînerait 4.234000, alors %g omettra les zéros et imprimer 4.234.

%g doit être utilisé quand il fait le plus de sens dans votre format de sortie que certains numéros sont imprimés en 12345.6, tandis qu'un nombre légèrement plus grand sera imprimé 1.235e04.

Autres conseils

%g automatiquement « flips » entre l'utilisation %e et %f en fonction de la valeur, dans une tentative d'affichage d'informations que possible, de la même manière que les calculatrices à main font. En outre, avec des zéros de fin de %g et point décimal ne sont pas inclus.

Pour la conversion de %f, la « précision » est le nombre de chiffres après le point décimal , alors que pour %g il est le nombre d'importants chiffres.
La précision par défaut est 6 dans les deux cas.

De la printf manuel:

«Le double argument est converti dans un style f ou e (ou F ou E pour               conversions G). La précision indique le nombre de chiffres significatifs. Si la précision est manquante, 6 chiffres sont donnés;               si la précision est égale à zéro, elle est traitée comme 1. e est utilisée               si l'exposant à partir de sa conversion est inférieure à -4 ou plus               supérieur ou égal à la précision. zéros sont retirés de               la partie décimale du résultat; un point décimal apparaît uniquement               si elle est suivie d'au moins un chiffre. "

Je ne veux pas « RTFM », mais vous trouverez probablement ce que vous cherchez dans les sections du manuel sur le contrôle de la précision et la longueur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top