Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

écriture des nombres (formatage de sortie)

32 réponses
Avatar
KooK
Bonjour,

Je voudrais écrire les nombres avec un espace tous les 3 chiffres afin
de les rendre plus lisibles. J'ai regardé du coté de setf et setw sans
succès. Suis-je passé à côté ? Quel fonction utiliser ?

exemple :
int main(void)
{
int a = 1000000;
//fonction pour faire afficher 1 000 000
cout << a << endl;
return 0;
}

Si vous savez répondre à la même question en C je suis preneur aussi.

KooK

2 réponses

1 2 3 4
Avatar
James Kanze
Sylvain wrote:
kanze wrote on 07/07/2006 10:37:


[..] Quelqu'un qui écrit des trucs tordus
comme ce que tu as posté se trouverait vite muté à une poste où
il n'écrit pas de code dans les boîtes où j'ai travaillé.



j'espère bien !


Un pow() et un log10(), pour commencer.



et des %, très mauvais les % !!


Pourquoi ? Si les paramètres sont positifs, ils donnent un
résultat précis.

Si tu veux t'amuser à lire le code source de la bibliothèque
standard... Et ça ne t'apprend que sur une implémentation
bien précises.



je croyais tenir de toi qu'il n'y avait pas tant
d'implémentations de la STL que ça sur le marché,


Dans la pratique, toutes les implémentations de la STL dérivent
d'une source commune. Il y a assez de temps, néaumoins, qu'il y
a des divergences importantes, et on ne peut pas dire que
l'implémentation Dinkumware soit identique à celle de Roguewave.

Mais ici, il ne s'agit pas de la STL, mais des iostream. Où la
situation est bien différente, et où il y avait déjà pas mal
d'implémentations complètement indépendantes. (En tout cas,
celle de Roguewave, celle de g++ et celle de Dinkumware sont
tous les trois bien différents.)

et qu'au contraire la distrib. de Plauger était fréquemment
choisie ?! oui, non, peut-être ?


D'après mes expériences, l'implémentation Dinkumware (qui est
sous le contrôle de Plauger, même s'il n'y est pas seul) est la
meilleur. Dans le temps, j'aurais dit de loin le meilleur, mais
celle de g++ arrive maintenant à à peu près le même niveau. Au
moins deux compilateurs, VC++ et Visual Age, utilisent
Dinkumware. Sun CC utilise actuellement RogueWave, mais je crois
qu'il essaie d'évoluer dans un autre sens. G++ utilise
l'implémentation g++.

[...]
pour l'anecdote:


String& operator << (String& inString, long int32){
static char temp[48];
char* p = temp;
ltoa(int32, p, inString.getRadix());
register char sep = inString.getSep();
if (sep){
char cnt = (inString.getRadix() == 10) ? 3 : 2;
char* frst = temp + (*temp == '-');
char* curr = strchr(temp, '');
p += sizeof(temp);
*--p = 0;
for (char in = 0; curr != frst; ++in){
if (in == cnt)
*--p = sep, in = 0;
*--p = *--curr;
}
if (*temp == '-')
*--p = '-';
}
return inString.append(p, ::strlen(p));
}


itoa / ltoa ne sont pas standards mais il existe de nbrx portages.


Tu as ça d'où ? Il faut se méfier de ce qu'on trouve sur
l'Internet -- 90%, sinon plus, c'est des efforts des amateurs
qui ne comprenent pas le problème ni les outils qu'ils essaient
à mettre en oeuvre. Ici, c'est manifestement le cas : l'auteur
est un amateur qui ne connaît ni les problèmes de formattage
internationnalisé, ni à vrai dire le C++, ni les principes de
base d'une bonne conception.

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34


Avatar
Sylvain
James Kanze wrote on 09/07/2006 14:09:

et des %, très mauvais les % !!


Pourquoi ? Si les paramètres sont positifs, ils donnent un
résultat précis.


ça devient trop facile de te pousser à te contredire, tu saisis la
moindre perche...

un amateur qui ne connaît ni les problèmes de formattage
internationnalisé, ni à vrai dire le C++, ni les principes de
base d'une bonne conception.


les prétendus professionels qui ne savent même pas afficher un nombre en
arabe dans le texte m'ont également bcp amusé ! quant aux autres
généralités creuses, je suis las de les lire; pas envie d'y répondre,
juste de les plonker.

Sylvain.


1 2 3 4