65 votes

Vérifier si le nombre est décimal

J'ai besoin de vérifier en PHP si l'utilisateur a saisi un nombre décimal (comme aux États-Unis, avec le point décimal : X.XXX).

Y a-t-il un moyen fiable de le faire ?

3 votes

Ce n'est pas une définition de fonction PHP.

0 votes

C'est du Actionscript, pas du PHP.

0 votes

Merci de l'avoir remarqué, la question a été modifiée. Désolé les gars, les nuits blanches m'ont fait trouver une fonction AS.

5voto

Jeff V Points 51

On m'a passé une chaîne de caractères, et je voulais savoir si c'était une décimale ou non. Je me suis retrouvé avec ça :

function isDecimal($value) 
{
     return ((float) $value !== floor($value));
}

J'ai effectué un certain nombre de tests en incluant des décimaux et des non-décimaux des deux côtés du zéro, et cela semble fonctionner.

3voto

rybo111 Points 1318

is_numeric renvoie à true pour les décimales et les entiers. Ainsi, si votre utilisateur saisit paresseusement 1 au lieu de 1.00 il retournera toujours true :

echo is_numeric(1); // true
echo is_numeric(1.00); // true

Vous pouvez convertir le nombre entier en décimal avec PHP, ou laisser votre base de données le faire pour vous.

1voto

Chaoix Points 902

Il s'agit d'une façon plus tolérante de gérer cela avec l'entrée de l'utilisateur. Cette regex correspondra à la fois à "100" et à "100.1" mais n'autorise pas les nombres négatifs.

/^(\d+)(\.\d+)?$/

1voto

Eric_ph Points 78

J'utilise ça :

function is_decimal ($price){
  $value= trim($price); // trim space keys
  $value= is_numeric($value); // validate numeric and numeric string, e.g., 12.00, 1e00, 123; but not -123
  $value= preg_match('/^\d$/', $value); // only allow any digit e.g., 0,1,2,3,4,5,6,7,8,9. This will eliminate the numeric string, e.g., 1e00
  $value= round($value, 2); // to a specified number of decimal places.e.g., 1.12345=> 1.12

  return $value;
}

1voto

Van Bien Points 1
   // if numeric 

if (is_numeric($field)) {
        $whole = floor($field);
        $fraction = $field - $whole;

        // if decimal            
        if ($fraction > 0)
            // do sth
        else
        // if integer
            // do sth 
}
else

   // if non-numeric
   // do sth

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X