Connaitre le nombre de chiffre d'un entier ou d'un réel [Résolu]

gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention - 24 mai 2008 à 09:44 - Dernière réponse : gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention
- 29 mai 2008 à 00:21
Bonjour à tous

Est-il possible de connaitre le nombre de chiffre d'un entier ou d'un
réel sans faire de transtypage. Existe-il une fonction du type intlen()
ou reallen()?

ex:

$int = 33;

$long = 2;

ou surtout $int = 33.333;

$long = 5;
Afficher la suite 

17 réponses

Répondre au sujet
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 24 mai 2008 à 14:24
+3
Utile
De longues années de pratique...
PHP_INT_SIZE
et pour la valeur max :
PHP_INT_MAX
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de malalam
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 24 mai 2008 à 20:42
+3
Utile
salut

tu fais un log10 pour avoir le nombre de chiffres avant la virgule.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de coucou747
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 24 mai 2008 à 09:59
0
Utile
salut,

je ne sais pas mais pour un entier, il te suffit de faire :

$int = 78;
$long = $int.lenght;

et pour un decimal, il te suffit de faire :

$int = 78.569;
$long = $int.lenght-1;

a++

PS : je ne suis pas sur que ça marche mais tu peus toujours essayer !

Si la réponse vous convient, pensez : Réponse accepté !
Commenter la réponse de nicomilville
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 24 mai 2008 à 10:26
0
Utile
Hello,

@nicomiville => ce n'est pas du php ça...

<?php
$int = 1789;
echo strlen((string)$int);
?>
Commenter la réponse de malalam
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 24 mai 2008 à 10:30
0
Utile
a, mince, de mieux en mieux, maintenant je confond du javascript avec du php ! :-(

a++

Si la réponse vous convient, pensez : Réponse accepté !
Commenter la réponse de nicomilville
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 24 mai 2008 à 10:30
0
Utile
Sans faire de transtypage on ne peut pas, que je sache.
Et pour des rééls, il reste les expressions régulières...
<?php
$float = 33.333;
preg_match_all('`([\d])`', (string)$float, $aRes);
echo count($aRes[1]);
?>
Commenter la réponse de malalam
gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention - 24 mai 2008 à 10:39
0
Utile
Merci pour ton aide
En essayant ton code j'obtient comme affichage

78lenght
77.569

Dans le premier cas, lenght est pris comme une chaine et dans le second il retire 1.
j'ai une E_NOTICE en error_reporting(E_ALL)

Ca serait plustot
$long = $int.length;
$long = $int.length-1;

Mais j'ai le même résultat. Ce qui est marrant car le compile m'indique 'Use of undefined constant length' ou 'Use of undefined constant lenght' mais ça m'enlève quand même 1 dans les deux orthographes différentes.
Commenter la réponse de gr43
gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention - 24 mai 2008 à 10:43
0
Utile
Désolé j'avais pas vu les nouveaux post. C'est bizarre d'avoir une E_notice mais qu'il enlève 1 dans mes deux cas, non?
Merci malalam pour ta réponse et à toi aussi  nicomilville.
Commenter la réponse de gr43
gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention - 24 mai 2008 à 10:56
0
Utile
Le problème avec (string) ou la regex, c'est que  sur des  nombres de plus de douze chiffres il intègre  l'exposant et donne la longeur du chiffre avec l'exposant.
ex: $float = 43.434344444444444;
$long=12;
Commenter la réponse de gr43
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 24 mai 2008 à 11:04
0
Utile
Non, c'est parce que 12, c'est la limite de la taille d'un chiffre en php, de base.
Commenter la réponse de malalam
gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention - 24 mai 2008 à 11:36
0
Utile
Donc au delà de 12 :
$float = 434304340304034034343430430403403;
preg_match_all('`([\d])`', (string)$float, $aRes);
echo count($aRes[1]);
echo (string)$float.;
affichage
15
4.34304340304E+032

$float = 434304340304034034343430430403403;
$chaine = (string)$float;
$nb = strlen($chaine);
echo $chaine;
echo $nb;
affichage
4.34304340304E+032

18
Commenter la réponse de gr43
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 24 mai 2008 à 11:48
0
Utile
ou tu peux changer ton php.ini (cette valeur peut-être changée).
Commenter la réponse de malalam
gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention - 24 mai 2008 à 14:21
0
Utile
Merci encore (mais où vas tu chercher tous çà, franchement balaise)
Par contre une dernière chose quelle directive du php.ini, çela m'éviterais de checher et encore thanks.
Commenter la réponse de gr43
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 24 mai 2008 à 14:26
0
Utile
Salut,

je crois que c'est celle la :

; The number of significant digits displayed in floating point numbers.
precision    =  14

a++

Si la réponse vous convient, pensez : Réponse accepté !
Commenter la réponse de nicomilville
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 24 mai 2008 à 14:26
0
Utile
désolé, on s'est croisé !

Si la réponse vous convient, pensez : Réponse accepté !
Commenter la réponse de nicomilville
gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention - 24 mai 2008 à 14:54
0
Utile
Super, Merci mais php4 donc chaud. A plus
Commenter la réponse de gr43
gr43 95 Messages postés mardi 20 mai 2008Date d'inscription 8 septembre 2010 Dernière intervention - 29 mai 2008 à 00:21
0
Utile
Salut coucou 747, merci pour ta réponse.
Commenter la réponse de gr43

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.