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 : |
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 )