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

Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 24 mai 2008 à 09:44 - Dernière réponse :
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 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 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- 24 mai 2008 à 14:24
3
Merci
De longues années de pratique...
PHP_INT_SIZE
et pour la valeur max :
PHP_INT_MAX

Merci malalam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de malalam
Meilleure réponse
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 24 mai 2008 à 20:42
3
Merci
salut

tu fais un log10 pour avoir le nombre de chiffres avant la virgule.

Merci coucou747 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de coucou747
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 24 mai 2008 à 09:59
0
Merci
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
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- 24 mai 2008 à 10:26
0
Merci
Hello,

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

<?php
$int = 1789;
echo strlen((string)$int);
?>
Commenter la réponse de malalam
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 24 mai 2008 à 10:30
0
Merci
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
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- 24 mai 2008 à 10:30
0
Merci
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
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 24 mai 2008 à 10:39
0
Merci
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
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 24 mai 2008 à 10:43
0
Merci
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
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 24 mai 2008 à 10:56
0
Merci
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
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- 24 mai 2008 à 11:04
0
Merci
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
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 24 mai 2008 à 11:36
0
Merci
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
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
- 24 mai 2008 à 11:48
0
Merci
ou tu peux changer ton php.ini (cette valeur peut-être changée).
Commenter la réponse de malalam
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 24 mai 2008 à 14:21
0
Merci
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
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 24 mai 2008 à 14:26
0
Merci
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
Messages postés
3498
Date d'inscription
lundi 16 juillet 2007
Dernière intervention
28 février 2014
- 24 mai 2008 à 14:26
0
Merci
désolé, on s'est croisé !

Si la réponse vous convient, pensez : Réponse accepté !
Commenter la réponse de nicomilville
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 24 mai 2008 à 14:54
0
Merci
Super, Merci mais php4 donc chaud. A plus
Commenter la réponse de gr43
Messages postés
95
Date d'inscription
mardi 20 mai 2008
Dernière intervention
8 septembre 2010
- 29 mai 2008 à 00:21
0
Merci
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.