Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

problème avec std::numeric_limits<long double>::infinity()

30 views
Skip to first unread message

Marc Guéguen

unread,
Nov 8, 2012, 8:42:24 AM11/8/12
to
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 "\03"; }
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 "\0"; }

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.

Marc Guéguen

unread,
Nov 8, 2012, 10:12:34 AM11/8/12
to
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

unread,
Nov 8, 2012, 6:19:00 PM11/8/12
to
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

unread,
Nov 9, 2012, 7:50:59 AM11/9/12
to
Je te remercie pour ta réponse.
Reste le problème du formatage...

"Olivier Miakinen" <om+...@miakinen.net> a écrit dans le message de
news:k7heio$88h$1...@cabale.usenet-fr.net...

Olivier Miakinen

unread,
Nov 9, 2012, 10:40:08 AM11/9/12
to
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" <om+...@miakinen.net> a écrit dans le message de
> news:k7heio$88h$1...@cabale.usenet-fr.net...
>> [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 :
<http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html>.

Cordialement,
--
Olivier Miakinen

0 new messages