Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1401 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Lecture du nombre de caracteres d'un float

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lecture du nombre de caracteres d'un float

n°1315893
sandra771
Posté le 01-03-2006 à 10:11:11  profilanswer
 

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

mood
Publicité
Posté le 01-03-2006 à 10:11:11  profilanswer
 

n°1315911
franceso
Posté le 01-03-2006 à 10:21:24  profilanswer
 

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)
...
 
???

n°1315923
sandra771
Posté le 01-03-2006 à 10:28:58  profilanswer
 

Je voudrais lire le nombre de caracteres d'un float ayant 2 chiffres apres la virgule comme 12.00 ou 4.00 par exemple

n°1315926
sandra771
Posté le 01-03-2006 à 10:30:18  profilanswer
 

ça ferait 5 pour 12.00
 et 4 pour 4.00

n°1315954
franceso
Posté le 01-03-2006 à 11:02:31  profilanswer
 

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 :
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5.   float f;
  6.   int i;
  7.   int n;
  8.   for( f=-11.8 ; f<12 ; ++f )
  9.     {
  10.       n = 3;
  11.       printf( "%10.2f -> ", f );
  12.      
  13.       if( f<0 )
  14. {
  15.   n++; /* le signe "-" */
  16.   i=floor(-f);
  17. }
  18.       else
  19. {
  20.   i=floor(f);
  21. }
  22.      
  23.       do
  24. {
  25.   n++;
  26.   i /= 10;
  27. }while(i!=0);
  28.      
  29.       printf( "%d caractères\n", n );
  30.     }
  31.   return 0;
  32. }


 

    -11.80 -> 6 caractères
    -10.80 -> 6 caractères
     -9.80 -> 5 caractères
     -8.80 -> 5 caractères
     -7.80 -> 5 caractères
     -6.80 -> 5 caractères
     -5.80 -> 5 caractères
     -4.80 -> 5 caractères
     -3.80 -> 5 caractères
     -2.80 -> 5 caractères
     -1.80 -> 5 caractères
     -0.80 -> 5 caractères
      0.20 -> 4 caractères
      1.20 -> 4 caractères
      2.20 -> 4 caractères
      3.20 -> 4 caractères
      4.20 -> 4 caractères
      5.20 -> 4 caractères
      6.20 -> 4 caractères
      7.20 -> 4 caractères
      8.20 -> 4 caractères
      9.20 -> 4 caractères
     10.20 -> 5 caractères
     11.20 -> 5 caractères


Message édité par franceso le 01-03-2006 à 11:03:45
n°1316040
sandra771
Posté le 01-03-2006 à 12:27:15  profilanswer
 

Si je comprends bien, il n'existe pas de fonction qui réalise tout ça à la fois.  
Merci pour ton code!!
Sandra

n°1316074
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-03-2006 à 13:05:57  profilanswer
 

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.  

  • La représentation interne d'un flottant est une appproximation
  • La traduction en texte varie en fonction de la précision demandée.

Que cherches-tu à faire exactement ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1316076
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-03-2006 à 13:07:07  profilanswer
 

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...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1316139
skelter
Posté le 01-03-2006 à 13:54:35  profilanswer
 

en c99 ca tient en une expression
snprintf(NULL, 0u, "%.2f", value)

Message cité 2 fois
Message édité par skelter le 01-03-2006 à 13:55:17
n°1316169
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-03-2006 à 14:09:34  profilanswer
 

skelter a écrit :

en c99 ca tient en une expression
snprintf(NULL, 0u, "%.2f", value)


Ah, c'est cool ça.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 01-03-2006 à 14:09:34  profilanswer
 

n°1316438
franceso
Posté le 01-03-2006 à 19:00:16  profilanswer
 

skelter a écrit :

en c99 ca tient en une expression
snprintf(NULL, 0u, "%.2f", value)


 
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 ?

n°1316450
Emmanuel D​elahaye
C is a sharp tool
Posté le 01-03-2006 à 19:14:23  profilanswer
 

franceso a écrit :

pourquoi faut-il se placer en norme C99 pour écrire "snprintf(NULL, 0u, "%.2f", value)" ?
Cette expression devrait être valable en C90, non ?


Pas de snprintf() en C90.


Message édité par Emmanuel Delahaye le 01-03-2006 à 19:14:39

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1316451
skelter
Posté le 01-03-2006 à 19:15:17  profilanswer
 

snprintf (comme vsnprintf) ne fais pas partie de c90, c'est standard à partir de c99


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Lecture du nombre de caracteres d'un float

 

Sujets relatifs
déclaration chaine de caractères ???Help MySQL tri par nombre d'occurrences
lecture automatique d'un SWF au chargement d'une page HTMLprobleme lecture audio sur forum
Identifier le type d'un caractere (majuscule, minuscule; nombre...)[C] Compter le nombre de lignes d'un fichier
Compter le nombre de fois qu'une expression revientJ2ME-Besoin d'aide pour lecture video et enregistrement audio
lecture de fichier avec sscanfFonction : Si un nombre et negatif
Plus de sujets relatifs à : Lecture du nombre de caracteres d'un float


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR