Nombre de chiffre dans un nombre [C] - Programmation
Marsh Posté le 02-04-2002 à 14:37:30
Un petit logarithme décimal ?
Marsh Posté le 02-04-2002 à 14:38:49
| joce a écrit a écrit  : Y a une methode simple pour avoir ca ? (Je pensais a un strlen(itoa(nombre)) mais ca me parait bourrain  ) | 
 
 
c'est la bonne méthode... je vois pas comment faire autrement... ou alors une fct toute faite existe p-t   
 
Marsh Posté le 02-04-2002 à 14:44:08
Eventuellement avec un log en base 10? (Pour un nombre exprimé en base décimale, bien sûr...)
Marsh Posté le 02-04-2002 à 14:46:49
1 + Trunc(Log10(Le_nombre))) 
(ça c'est les fonctions en Pascal mais ça doit pas être très loin du C) 
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 02-04-2002 à 14:49:32
Moi non plus, je vois pas mieux qu'un  
int nbreChiffre = 1 + (int)log10(fabs(x)); 
Marsh Posté le 02-04-2002 à 14:51:45
Ha ouais j'ai oublié le Abs  
 
Marsh Posté le 02-04-2002 à 15:21:47
Ha ouais  
 
| Citation :   | 
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 02-04-2002 à 15:22:48
bon finalement : 
 
#define LENGTH(num) (num==0)?1:(int)log10(fabs(num)) 
 
:p 
[jfdsdjhfuetppo]--Message édité par joce--[/jfdsdjhfuetppo]
Marsh Posté le 02-04-2002 à 15:31:53
heu j'ai un bleme la 
 
bon finalement : 
 
Ca ca me renvoie la bonne valeur : 
 
printf("%d\n",(strlen(IDSTR(base))+4)); 
 
Et ca ca me renvoie 1  
 
 
printf("%d\n",(strlen(IDSTR(base))+4+LENGTH(port->index))); 
Marsh Posté le 02-04-2002 à 15:39:25
Dans ton #define t'as déjà oublié le +1
Marsh Posté le 02-04-2002 à 15:41:17
ouaip je l'ai rajoute apres coup, mais c'est pas le probleme
Marsh Posté le 02-04-2002 à 15:43:29
si tu veux ca me renvoie ca : 
 
      printf("%d\n",strlen(IDSTR(base))+3); 
      printf("%d\n",strlen(IDSTR(base))+LENGTH(port->index)+3); 
 
11 
1 
 
Donc y a un bleme kelkepart  
 
Marsh Posté le 02-04-2002 à 15:45:23
essaie 
| Code : 
 | 
 
 
parenthèses en plus autour de l'expression, on sait jamais 
 
edit: et c'est pour quand que tu nous code la désactivation auto des smileys entre code et /code ?  
 
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 02-04-2002 à 15:45:59
c'est bon j'ai trouve : 
 
(int)(LENGTH(port->index)) 
 
ct la solution  
 
Marsh Posté le 02-04-2002 à 15:46:41
Bon bhen j'avais raison, il manque des parenthèses  
 
Mais c'est plus propre de les rajouter dans le #define 
Marsh Posté le 02-04-2002 à 15:53:20
Ça ne résout pas le problème des smileys entre code et /code par contre  
 
Marsh Posté le 02-04-2002 à 16:08:59
Y a aussi: 
| Citation :   | 
 
 ![[:sisicaivrai] [:sisicaivrai]](https://forum-images.hardware.fr/images/perso/sisicaivrai.gif) 
 
Marsh Posté le 02-04-2002 à 16:34:51
Bhen pourtant parfois il plante la journée aussi  
  
 
Marsh Posté le 02-04-2002 à 16:50:06
Question d'un non-matheux   :
 : 
 
Quelle est l'utilité de la fonction logarythme (en l'occurence logarythme décimal) pour trouver le nombre de chiffres ici ? 
 
Merci !   
 
Marsh Posté le 02-04-2002 à 16:53:03
10 puissance x te donne un nombre de x+1 chiffres (1 + x zéros ) 
 
Le log, c'est la fonction inverse. 
Marsh Posté le 02-04-2002 à 16:59:56
| Mara's dad a écrit a écrit  : 10 puissance x te donne un nombre de x+1 chiffres (1 + x zéros ) Le log, c'est la fonction inverse. | 
 
 
Merci!   
 
Marsh Posté le 02-04-2002 à 17:13:44
| robbystar a écrit a écrit  : Quelle est l'utilité de la fonction logarythme (en l'occurence logarythme décimal) pour trouver le nombre de chiffres ici ? | 
C'est qu'il a le rithme dans la peau.
Marsh Posté le 02-04-2002 à 17:21:25
| Jar Jar a écrit a écrit  : C'est qu'il a le rithme dans la peau. | 
 
 
  
 
Marsh Posté le 02-04-2002 à 14:34:38
Y a une methode simple pour avoir ca ? )
) 
(Je pensais a un strlen(itoa(nombre)) mais ca me parait bourrain