FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
- Arrondi d'un nombre
- Comment convertir un nombre dans une autre base ?
- Comment déclarer un nombre en octal, en hexadécimal ?
- Comment effectuer un calcul et fixer le nombre de chiffres après la virgule ?
- Comment élever un nombre x à une puissance y ?
- Comment générer un nombre décimal aléatoire ?
- Comment générer un nombre au hasard ?
- Comment formater un nombre décimal pour l'affichage ?
- Comment vérifier le format d'un nombre ?
- Comment tester si un nombre est impair ?
Arrondi à l'entier supérieur : ceil(),
arrondi à l'entier inférieur : floor(),
arrondi à l'entier le plus proche : round().
Exemples :
echo ceil(1.1
);
// affiche 2
echo floor(-
1.6
);
// affiche -2
echo round(1.5
);
// affiche 2
A noter que round($nbr [, $dec]) peut prendre un argument optionnel lui spécifiant le nombre de chiffres après la virgule qu'il faut garder : c'est la précision décimale.
Il est souvent utile de convertir un nombre décimal en binaire (écriture d'un fichier binaire), hexadécimal (format de couleur), octal (format des droits de fichiers) ou que sais-je encore...
$dec
=
"
125
"
;
$bin
=
"
01001
"
;
$hex
=
"
ff00a2
"
;
$oct
=
"
4750
"
;
echo decbin($dec
);
// décimal vers binaire
echo dechex($dec
);
// décimal vers hexadécimal
echo decoct($dec
);
//décimal vers octal
echo bindec($bin
);
// binaire vers décimal
echo hexdec($hex
);
// hexadécimal vers décimal
echo octdec($oct
);
// octal vers décimal
Il existe une fonction plus générale permettant de convertir un nombre en n'importe quelle base : base_convert ($nbr, $source, $dest) qui convertit en base $dest le nombre $nbr exprimé en base $source. Les bases sont des entiers compris entre 2 et 36.
Par exemple, la fonction decbin($nbr) est équivalente à base_convert($nbr,10,2). Etant entendu que les nombres décimaux sont en base 10, les binaires en base 2, les hexadécimaux en base 16 et les octaux en base 8.
Lorsque l'on manipule des données numériques (le plus souvent informatiques), il peut s'avérer utile de définir une variable en base octale ou hexadécimale, afin de s'éviter tout un tas de conversions à la main. Ainsi, il suffit de précéder la valeur assignée à une variable du bigramme '0x' pour la définir en base hexadécimale, et du chiffre '0' pour une définition octale.
$hexa_var
=
0x150
;
// Définition d'un nombre en base hexadécimale
$octal_var
=
0150
;
// Définition d'un nombre en base octale
Attention, cette manipulation ne fonctionne que pour la définition: de fait, la commande
echo $hexa_var
;
affichera 336 et non 0x150.
L'extension BCMath de PHP contient les outils nécessaires pour fixer le nombre de chiffres décimaux.
Il faut alors utiliser des fonctions de cette extension pour effectuer les opérations artithmétiques ; on peut définir le nombre de chiffres à conserver après la virgule en tant que troisième paramètre, les premier et deuxième étant réservés aux opérandes.
Pour élever un nombre x à la puissance y il
suffit d'utiliser la fonction
bcpow()
qui retourne x élevé à la puissance y,
FALSE en cas d'erreur.
Exemple :
Attention : la valeur de la puissance y doit toujours être entière
Pour obtenir un nombre décimal aléatoire, il nous faut utiliser les fonctions rand() qui génère une valeur aléatoire et pow qui retourne un entier élevé à une certaine puissance.
Donc la génération d'un nombre décimal entre $a et $b avec $n chiffres après la virgule se fait avec le code :
Lien : Comment générer un nombre au hasard ?
Lien : Comment générer un identifiant aléatoire et unique ?
La machine ne sait fournir que ce qu'elle est en mesure de calculer. Or le vrai hasard ne se calcule pas, sinon ça n'en serait pas ! La machine est par contre en mesure de fournir des valeurs dont la distribution est suffisamment déroutante et sans ordre apparent pour les faire passer pour du hasard. Ces valeurs sont aléatoires. C'est du pseudo-hasard.
Pour obtenir un nombre aléatoire entre $min et $max : mt_rand([$min, $max]). Si $min et $max sont absents : retourne un entier entre 0 et RAND_MAX. Mais avant toute chose il faut initialiser le générateur de nombre aléatoire avec mt_srand($init) (appelée automatiquement depuis PHP 4.2.0) où $init est un entier d'initialisation qui lui même doit être toujours différent. Pour cela on prend en général la date courante avec précison à la seconde.
Exemple :
Lien : Comment générer un nombre décimal aléatoire ?
Lien : Comment générer un identifiant aléatoire et unique ?
Pour formater un nombre décimal, on utilise la fonction
number_format()
qui retourne une chaîne représentant nombre formaté.
Exemple de syntaxe :
$nombre
=
1234.5632
;
echo number_format($nombre
);
// Affiche 1,235
echo number_format($nombre
,
2
,
'
,
'
,
'
'
);
// Affiche 1 234,56
echo number_format($nombre
,
2
,
'
.
'
,
'
,
'
);
// Affiche 1,234.56
echo number_format($nombre
,
3
,
'
.
'
,
''
);
// Affiche 1234.563
-
À l'aide des fonctions de base comme is_int ou autres qui sont décrites dans la Q/R Comment connaître le type d'une variable ?
-
À l'aide de la fonction gettype qui retourne le type de la variable PHP.
À noter qu'il est préférable d'utiliser la première solution car elle est bien plus rapide.
- À l'aide des expressions régulières, à voir dans la Q/R Comment vérifier un nombre à l'aide d'expressions régulières ?
- À l'aide des fonctions de la bibliothèques ctype qui sont détaillées dans la Q/R Comment vérifier le type d'une chaîne ?
$var
=
10
;
echo ctype_digit($var
);
// Affiche TRUE
$var
=
10.21
;
echo ctype_digit($var
);
// Affiche FALSE
Lien : Tutoriel : Initiation aux expressions régulières en PHP, par Guillaume Rossolini
Il existe de multiples possibilités d'écriture pour tester la parité d'un nombre. En voici quelques-unes :
En utilisant le modulo
En utilisant la fonction is_float() :
En utilisant l'opérateur de bit & :
ou plus succintement
echo "
$nombre
est
"
,
$nombre
&
1
?
"
impair
"
:
"
pair
"
;