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.

-1voto

Adnan Ahmad Points 378

Si vous travaillez avec la validation des formulaires. Dans ce cas, le formulaire envoie une chaîne de caractères. J'ai utilisé le code suivant pour vérifier si l'entrée du formulaire est un nombre décimal ou non. J'espère que cela fonctionnera pour vous aussi.

function is_decimal($input = '') {

    $alphabets = str_split($input);
    $find = array('0','1','2','3','4','5','6','7','8','9','.'); // Please note: All intiger numbers are decimal. If you want to check numbers without point "." then you can remove '.' from array. 

    foreach ($alphabets as $key => $alphabet) {
        if (!in_array($alphabet, $find)) {
            return false;
        }
    }

    // Check if user has enter "." point more then once.
    if (substr_count($input, ".") > 1) {
        return false;
    }

    return true;
}

-1voto

function is_decimal_value( $a ) {
    $d=0; $i=0;
    $b= str_split(trim($a.""));
    foreach ( $b as $c ) {
        if ( $i==0 && strpos($c,"-") ) continue;
        $i++;
        if ( is_numeric($c) ) continue;
        if ( stripos($c,".") === 0 ) {
            $d++;
            if ( $d > 1 ) return FALSE;
            else continue;
        } else
        return FALSE;
    }
    return TRUE;
}

Problèmes connus avec la fonction ci-dessus :

1) Ne prend pas en charge la "notation scientifique" (1.23E-123), l'impôt ($ en tête ou autre) ou le "f de fin". (flottants de style C++) ou la "devise de queue" (USD, GBP, etc.).

2) Faux positif sur les noms de fichiers de chaîne qui correspondent à une décimale : Veuillez noter que, par exemple, "10.0" en tant que nom de fichier ne peut pas être distingué de la décimale, donc si vous essayez de détecter un type à partir d'une chaîne seule, et qu'un nom de fichier correspond à un nom décimal et n'a pas de chemin inclus, il sera impossible de le discerner.

-2voto

Cam Tullos Points 675

Peut-être que vous pouvez aussi vous renseigner sur ce sujet

!is_int()

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