IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ PHP

FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021 

 
OuvrirSommaireTypesNombres

Arrondi à l'entier supérieur : ceil(),
arrondi à l'entier inférieur : floor(),
arrondi à l'entier le plus proche : round().

Exemples :

 
Sélectionnez
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.

Mis à jour le 6 août 2008  par Cyberzoide

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...

 
Sélectionnez
$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.

Mis à jour le 6 août 2008  par Cyberzoide

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.

 
Sélectionnez
$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

 
Sélectionnez
echo $hexa_var;

affichera 336 et non 0x150.

Mis à jour le 6 août 2008  par f-demu01

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.

 
Sélectionnez
$a = '42.2424';
$b = '67';               
echo bcadd($a, $b); // 109.2424
echo bcadd($a, $b, 3); // 109.242
echo bcsub($a, $b); // -24.7576
echo bcsub($a, $b, 2); // -24.75
echo bcmul($a, $b); // 2830.2408
echo bcmul($a, $b, 1); // 2830.2
echo bcsqrt($a, 2); // 6.49
Mis à jour le 8 mars 2011  par dourouc05

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 :

 
Sélectionnez
$x = 2;
$y = 4;
echo bcpow($x, $y); // Affiche 16

Attention : la valeur de la puissance y doit toujours être entière

Mis à jour le 6 août 2008  par Forum PHP

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 :

 
Sélectionnez
$nb = mt_rand($a * pow(10, $n), $b * pow(10, $n)) / pow(10, $n);
Mis à jour le 6 août 2008  par Forum PHP

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 :

 
Sélectionnez
mt_srand((float) microtime()*1000000);
echo mt_rand(0, 100); // affiche un nombre aléatoire entre 1 et 100
Mis à jour le 6 août 2008  par Cyberzoide

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 :

 
Sélectionnez
$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
Mis à jour le 6 août 2008  par Forum PHP
On peut utiliser plusieurs méthodes pour le faire :
  • À 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 ?

     
    Sélectionnez
    $var = 15.32;
    echo is_float($var); // Affiche TRUE
    $var = 15;
    echo is_float($var); // Affiche FALSE
    $var = 15,10;
    echo is_float($var); // Affiche FALSE
  • À l'aide de la fonction gettype qui retourne le type de la variable PHP.

    Vérification d'un entier soit d'un flottant
    Sélectionnez
    <?
    $Var = 15.321;
    if ((gettype($Var)=="integer") or (gettype($Var)=="double")) 
    {
      echo "C'est bon";
    }
    else
    {
      echo "C'est pas bon";
    }
    ?>

À noter qu'il est préférable d'utiliser la première solution car elle est bien plus rapide.

Vérification d'un nombre entier
Sélectionnez
$var = 10;
echo ctype_digit($var); // Affiche TRUE
$var = 10.21;
echo ctype_digit($var); // Affiche FALSE
Mis à jour le 6 août 2008  par Forum PHP, Kerod

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

 
Sélectionnez
if ($nombre%2 == 1)
    echo "$nombre est impair";
else
    echo "$nombre est pair";

En utilisant la fonction is_float() :

 
Sélectionnez
if (is_float($nombre/2))
    echo "impair";
else
    echo "pair";

En utilisant l'opérateur de bit & :

 
Sélectionnez
if ($nombre&1)
    echo "$nombre est impair";
else
echo "$nombre est pair";

ou plus succintement

 
Sélectionnez
echo "$nombre est ",  $nombre&1 ? "impair" : "pair"  ;
Mis à jour le 6 août 2008  par Jérôme

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.