Faire la difference entre un chiffre entier et un chiffre avec virgule

Signaler
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
hey,
si le resultat de deux variables est :
$data1 = 28.9856;
$data2 = 29;

si je veux afficher que la variable ayant un chiffre sans virgule comment je fais pour contrôler les variables


joebuz

33 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
if(is_int($data1))

{

echo '$data 1 est un entier';

}

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

marche pas

$data1 = 28569;
$data2 = 28.569;

if(is_int($data1)){
echo ' '.$data1 .'est un entier
';}
else{
echo ' '.$data1 .'est un nombre a virgule
';}
if(is_int($data2)){
echo ' '.$data2 .'est un entier
';}
else{
echo ' '.$data2 .'est un nombre a virgule
';}

affichage :
28569 est un nombre à virgule
28.569 est un nombre à virgule


joebuz
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Bah essaie la solution inverse avec is_float() alors (cette fonction retourne true si c'est un nombre décimal)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
heu...



Perso moi, ca marche tres bien (j'ai copie colle ton code parce que ca m'intriguait).
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
mdr, je me disais aussi...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
joebuz > pas sympa d'inventer des bugs pour nous montrer qu'on a pas trouvé la solution (je déconne bien sûr ;-) )

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

non plus avec float

data1 : 229710
data2 : 22.9710

if(is_float($data1)){
echo ' '.$data1.'est un nombre a virgule
';}
else{
echo ' '.$data1 .'est un entier
';}
if(is_float($data2)){
echo ' '.$data2 .'est un nombre a virgule
';}
else{
echo ' '.$data2 .'est un entier
';}

affichage :
22.971est un nombre a virgule
229710est un nombre a virgule


joebuz
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

voila mon script en entier...

$sql2 = "SELECT nom,prenom,age FROM W_membres WHERE numinsc='$qui'";
$req2 = mysql_query($sql2) or die ('Erreur SQL ! '. $sql2 . mysql_error());
if($data2 = mysql_fetch_array($req2)){
$nom = $data2['nom'];
$prenom = $data2['prenom'];
$date2 = $data2['age'];}


$age2 = floor(date(Ymd) - $date2);
//echo "age2 = ".$age2."
";


$age = $age2/10000;
//echo "age = ".$age."
";


if(is_float($age)){
echo ' '.$age .'est un nombre a virgule
';}
else{
echo ' '.$age .'est un entier
';}
if(is_float($age2)){
echo ' '.$age2 .'est un nombre a virgule
';}
else{
echo ' '.$age2 .'est un entier
';}


joebuz
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
il doit considérer ça comme une string surement, essaie avec
"is_string()" comme fonction, si ça retourne true c'est que c'est une
string, enfin bon après un floor pourquoi ça serait pas converti en
int...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

ca doit venir de ma page j'ai essayé les deux is_int() et is_float() sur une page d'essai et ca marche très très bien !


joebuz
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
essaye plutot avec gettype ()

http://de2.php.net/manual/en/function.gettype.php

ce serait plus simple, tu auras directement le type.



Mais cÄ'est curieux en effet.



g essaye ca et ca marche tjrs :



<?php

$age2 = '25000';

$age = $age2/10000;

//echo "age = ".$age."
";



if(is_float($age)){

echo ' '.$age .'est un nombre a virgule
';}

else{

echo ' '.$age .'est un entier
';}

if(is_float($age2)){

echo ' '.$age2 .'est un nombre a virgule
';}

else{

echo ' '.$age2 .'est un entier
';}



?>
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

en fait non ca marche que quand c'est moi qui attribue les valeurs aux variables

si je met dans le script :
$data1 = 250000;
$data2 = 25;
ca marche
mais si je met le script que je vous ai montrer ca marche pas

j'essaye avec is_string() et je vous dis ca
joebuz
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
ok, si c'est ni is_int() ni is_float() ça sera surement ça...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

if(is_string($age)){
echo ' '.$age .'est une string
';}
else{
echo ' '.$age .'n est pas une string
';}


if(is_string($age2)){
echo ' '.$age2 .'est une string
';}
else{
echo ' '.$age2 .'n est pas une string
';}

affichage :

$age 22.971 n est pas une string
$age 2229710 n est pas une string


joebuz
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
bon bah utilise gettype pour savoir quel type c'est enfin bon ça craint...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
bon une solution vaseuse si vraiment t'y arrive pas : tu fais un strpos
pour savoir si y'a un point dans la valeur de la variable, si oui bah
c'est une variable décimale...
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

avec gettype :

$type = gettype($age);
$type2 = gettype($age2);

type : double
type2 : double

avec des nombres entier ou decimal


joebuz
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

reponse strpos
bah oui mais non j'utilise cette fonction pour contrôler le point d'une addresse e-mail
et c'est ce que j'ai essayé en premier avant de venir sur le forum, marche pas non plus, j'ai essayé egalement avec preg_match() ([0-9]/. )...... marche pas non plus


joebuz
Messages postés
321
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
21 février 2013

AU SECOURS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


joebuz
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
bah t'as la fonction is_double() mais c'est un alias de is_float() bref is_float() devrait fonctionner...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>