Lecture du nombre de caracteres d'un float - C - Programmation
Marsh Posté le 01-03-2006 à 10:21:24
C'est quoi le nombre de caractères d'un float ?
le nombre de caractères de 1.5 est-il
3 (comme dans 1.5)
8 (comme dans 1.500000)
7 (comme dans 1.5e+00)
...
???
Marsh Posté le 01-03-2006 à 10:28:58
Je voudrais lire le nombre de caracteres d'un float ayant 2 chiffres apres la virgule comme 12.00 ou 4.00 par exemple
Marsh Posté le 01-03-2006 à 11:02:31
sandra771 a écrit : Je voudrais lire le nombre de caracteres d'un float ayant 2 chiffres apres la virgule comme 12.00 ou 4.00 par exemple |
donc en gros ça fait 3 + <nombre de caractères utilisé pour la partie entière de ton nombre> + (éventuellement) signe "-"
Code :
|
-11.80 -> 6 caractères |
Marsh Posté le 01-03-2006 à 12:27:15
Si je comprends bien, il n'existe pas de fonction qui réalise tout ça à la fois.
Merci pour ton code!!
Sandra
Marsh Posté le 01-03-2006 à 13:05:57
sandra771 a écrit : Je n'ai pas réussi à appliquer cette fonction pour lire le nombre de caracteres d'un float, en faisant le code suivant: |
Cette question n'a aucun sens avec un flottant.
Que cherches-tu à faire exactement ?
Marsh Posté le 01-03-2006 à 13:07:07
sandra771 a écrit : Je voudrais lire le nombre de caracteres d'un float ayant 2 chiffres apres la virgule comme 12.00 ou 4.00 par exemple |
Alors il faut le convertir avec "%.2f" et mesurer la longueur du résultat...
Marsh Posté le 01-03-2006 à 13:54:35
en c99 ca tient en une expression
snprintf(NULL, 0u, "%.2f", value)
Marsh Posté le 01-03-2006 à 14:09:34
skelter a écrit : en c99 ca tient en une expression |
Ah, c'est cool ça.
Marsh Posté le 01-03-2006 à 19:00:16
skelter a écrit : en c99 ca tient en une expression |
Bien vu !!!
Juste une petite question: pourquoi faut-il se placer en norme C99 pour écrire "snprintf(NULL, 0u, "%.2f", value)" ?
Cette expression devrait être valable en C90, non ?
Marsh Posté le 01-03-2006 à 19:14:23
franceso a écrit : pourquoi faut-il se placer en norme C99 pour écrire "snprintf(NULL, 0u, "%.2f", value)" ? |
Pas de snprintf() en C90.
Marsh Posté le 01-03-2006 à 19:15:17
snprintf (comme vsnprintf) ne fais pas partie de c90, c'est standard à partir de c99
Marsh Posté le 01-03-2006 à 10:11:11
Bonjour,
J'ai vu dans un sujet précédent l'utilisation de sprintf pour lire le nombre de caracteres d'un int. Avec l'exemple suivant:
char chaine[100];
int i;
int nombre;
i=fonction_quelconque_qui_renvoie_un_int();
sprintf(chaine, "%d", i);
nombre=strlen(chaine);
Je n'ai pas réussi à appliquer cette fonction pour lire le nombre de caracteres d'un float, en faisant le code suivant:
char chaine[100];
float i;
int nombre;
i=fonction_quelconque_qui_renvoie_un_float();
sprintf(chaine, "%f", i);
nombre=strlen(chaine);
Peut-être que c'est normal. Si oui, existe-t-il une fonction qui réalise ceci pour un float?
Merci d'avance!
SAndra