C++ Chiffres d'un float
Résolu/Fermé
Crazy Legs
Messages postés
635
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
27 septembre 2016
-
Modifié par Crazy Legs le 10/12/2010 à 19:11
Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 - 10 déc. 2010 à 21:29
Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 - 10 déc. 2010 à 21:29
A voir également:
- C++ Chiffres d'un float
- Tous les code possible de 0 à 9 (4 chiffres ) - Forum Jeux vidéo
- Nombre de combinaison possible avec 8 chiffres - Forum Programmation
- Cadenas code bloqué 4 chiffres ✓ - Forum Virus
- Nombre de combinaison possible avec 10 chiffres - Forum Programmation
- Numero telephone 13 chiffres ✓ - Forum Mobile
3 réponses
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
10 déc. 2010 à 20:12
10 déc. 2010 à 20:12
Un float est un nombre, seul sa représentation a des chiffres.
Par exemple 0.56 = 0.560 = 0.5600 = 0.56000
Voilà pourquoi avec ta méthode tu as parfois 56, parfois 56000 !
Remarque on peut aussi dire que c'est égal à 5.6e-1, dans ces cas là ça n'a pas de sens de parler du nombre de chiffre du float !
Si tu veux calculer le nombre de chiffres significatifs de la représentation, tu peux manipuler une chaîne de caractère :
Par exemple 0.56 = 0.560 = 0.5600 = 0.56000
Voilà pourquoi avec ta méthode tu as parfois 56, parfois 56000 !
Remarque on peut aussi dire que c'est égal à 5.6e-1, dans ces cas là ça n'a pas de sens de parler du nombre de chiffre du float !
Si tu veux calculer le nombre de chiffres significatifs de la représentation, tu peux manipuler une chaîne de caractère :
#include <sstream> int nombreChiffres(const float x) { std::ostringstream oss; oss << x; std::string s=oss.str(); int n=0; for (int i=0; i<s.size(); i++) { switch (s[i]) { case 'e' : return n; // on ne compte pas les chiffres de l'exposant case '-' : break; case '.' : break; default : n++; // les chiffres } } return n; }
Crazy Legs
Messages postés
635
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
27 septembre 2016
98
10 déc. 2010 à 21:25
10 déc. 2010 à 21:25
Intéressant, je regarde ça de suite :)
Merci !
Merci !
Crazy Legs
Messages postés
635
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
27 septembre 2016
98
10 déc. 2010 à 21:29
10 déc. 2010 à 21:29
Génial, j'avais effectivement pensé à mettre le nombre dans une chaîne, mais je ne connaissais pas sstream. Merci beaucoup :D