problème avec std::numeric_limits::infinity()

Le
Marc Guéguen
Bonjour,
J'utilise une classe dérivée de std::numpunct pour le formatage des nombres,
définie comme suit (en simplifié pour aller à l'essentiel)

class owner_defined_facet : public std::numpunct<char> {
virtual std::string do_grouping() const { return "3"; }
virtual char do_thousands_sep() const { return ' ';}
virtual char do_decimal_point() const { return ',';}
};

Ensuite, je fais
std::locale the_one(std::locale(),owner_defined_facet());
std::basic_ostringstream<char> *ossPtr=new std::basic_ostringstream<char>;
ossPtr->imbue( the_one);
// et pour écrire dans le flux le nombre d
ossPtr->operator<<(d);
// avec ceci pour récupérer la valeur
ossPtr->str();

Mon problème, ça plante avec std::numeric_limits<long double>::infinity()
comme valeur de d
Et ça fonctionne si je supprime le séparateur des milliers comme ceci
virtual std::string do_grouping() const { return ""; }

Est-ce que vous voyez où est le problème ?

Une autre question : comment un nombre se voit affecter la valeur
std::numeric_limits<long double>::infinity(),
si ce n'est pas par affectation directe ?

Merci bien.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Marc Guéguen
Le #24946312
Précision :
J'obtiens en fait la sortie suivante
+IN F00 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000....
avec encore plein de zéros !
Olivier Miakinen
Le #24947252
Bonjour,

Le 08/11/2012 14:42, Marc Guéguen a écrit :

Une autre question : comment un nombre se voit affecter la valeur
std::numeric_limits<long double>::infinity(),
si ce n'est pas par affectation directe ?



Est-ce que « long double valeur = 1.L/0.L; », c'est ce que tu appelles
une affectation directe ?

Si oui, il y a :
long double valeur = 1.L;
valeur /= 0.L;

Mais tu peux aussi multiplier std::numeric_limits<long double>::max()
par lui-même.

Enfin... j'espère ne pas être à côté de la plaque car je n'ai jamais
utilisé tout ça.

Cordialement,
--
Olivier Miakinen
Marc Guéguen
Le #24948242
Je te remercie pour ta réponse.
Reste le problème du formatage...

"Olivier Miakinen" news:k7heio$88h$
Bonjour,

Le 08/11/2012 14:42, Marc Guéguen a écrit :

Une autre question : comment un nombre se voit affecter la valeur
std::numeric_limits<long double>::infinity(),
si ce n'est pas par affectation directe ?



Est-ce que « long double valeur = 1.L/0.L; », c'est ce que tu appelles
une affectation directe ?

Si oui, il y a :
long double valeur = 1.L;
valeur /= 0.L;

Mais tu peux aussi multiplier std::numeric_limits<long double>::max()
par lui-même.

Enfin... j'espère ne pas être à côté de la plaque car je n'ai jamais
utilisé tout ça.

Cordialement,
--
Olivier Miakinen
Olivier Miakinen
Le #24948682
Bonjour,

Le 09/11/2012 13:50, Marc Guéguen a écrit :
Je te remercie pour ta réponse.
Reste le problème du formatage...

"Olivier Miakinen" news:k7heio$88h$
[copie intégrale, signature comprise]





Concernant le formatage de la valeur infinie avec std::numpunct, je n'ai
pas la réponse. Mais pour ce qui est du formatage des réponses dans les
news, voici la doc à lire :

Cordialement,
--
Olivier Miakinen
Publicité
Poster une réponse
Anonyme