Spécifier la largeur maximale du champ printf pour les nombres (tronquer si nécessaire)?
Vous pouvez supprimer des chaînes de caractères avec un printf
champ-spécificateur de largeur:
printf("%.5s", "abcdefgh");
> abcde
Malheureusement, il ne fonctionne pas pour les nombres (en remplacement de d
avec x
est le même):
printf("%2d", 1234); //for 34
printf("%.2d", 1234); //for 34
printf("%-2d", 1234); //for 12
printf("%-.2d", 1234); //for 12
> 1234
Est-il facile/moyen trivial de spécifier le nombre de chiffres à imprimer, même si cela signifie la troncature d'un nombre?
MSDN spécifiquement dit que ça n'arrivera pas qui semble inutilement restrictif. (Oui, il peut être fait par la création de chaînes et, mais je suis l'espoir d'un “printf truc” intelligent ou quelque chose.)
source d'informationauteur Synetech
Vous devez vous connecter pour publier un commentaire.
Comme beaucoup de mes meilleures idées, la réponse m'est venue alors que couché dans son lit, en attendant de s'endormir (il n'y a pas grand chose d'autre à faire que de penser).
Utiliser le module!
Ce n'est pas idéal car il ne peut pas tronquer à partir de la gauche (par exemple,
12
au lieu de34
), mais il travaille pour les principaux cas d'utilisation. Par exemple:Si vous souhaitez tronquer à partir de la droite, vous pouvez convertir votre numéro de chaîne, puis utilisez le champ de type chaîne de spécificateur de largeur.
Exemple de ligne de commande Bash:
Vous pouvez utiliser snprintf à tronquer à partir de la droite
Pourquoi ne pas partir de la gauche? la seule différence est l'utilisation simple division: