| Qui est en ligne ? |
| Il y a : 16 utilisateurs en ligne, consultez le détail |
Forum » Serveur, Réseaux et Programmation » fonction is_int() en php incompréhensible!! |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
| Page : [1] |
| Auteur | Message |
|---|---|
|
|
#0 Message posté le : 14-04-2007 à 13:39:42 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 16-01-2003 Nombre de messages : 242 |
Je deviens fou! j'aimerai savoir si la racine d'un nombre est un nombre entier. je fais donc : $nb = 4; if (is_int(sqrt($nb))) { echo 'Nb entier'; } Mais non ca ne marche pas! Pourtant sqrt($nb) renvoi 2 et si je fais if (is_int(2)) ... la ca marche. Je n'y comprends rien autrement dit quelqu'un peut m'expliquer pourquoi $string = 256; if(is_int(sqrt($string))) echo 'true'; else echo 'false'; affiche false??? --Message édité par ovni le 14-04-2007 à 14:01:50-- ------------------------------------- |
|
|
#1 Message posté le : 14-04-2007 à 15:17:11 |
Jedi Forum : Modérateur Association : Membre fondateur Arrivé(e) le : 08-01-2005 Nombre de messages : 4030 |
Salut celà est dû au fait que le nombre renvoyé est un float, même s'il est entier. Pour faire ton test, je te conseille plutôt de calculer la racine, de prendre sa partie entière, puis de calculer le carré de cette partie entière. Si le résultat est le même que le nombre de départ, celà signifie que tu as bien une racine entière. ------------------------------------- C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon - |
|
|
#2 Message posté le : 14-04-2007 à 16:01:43 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 16-01-2003 Nombre de messages : 242 |
ok merci c'est parfait ca marche... Et juste en passant si qqn connait une fonction php qui compte le nombre de caractère différent dans une chaine : 345 renverrai 3 112 renverrai 2 333 renverrai 1 etc... ------------------------------------- |
|
|
#3 Message posté le : 17-04-2007 à 08:23:20 |
Hobbit Forum : Inscrit Association : Arrivé(e) le : 17-10-2003 Nombre de messages : 1067 |
strlen pour le nombre de caractères (comme en C) et pour savoir si une division renvoie un nombre entier ou pas on peut utiliser modulo : if( ( DIVIDENDE % DIVISEUR ) == 0 ) { return true; } else { return false; } ------------------------------------- If you don't know, ask manpage ! |
|
|
#4 Message posté le : 17-04-2007 à 13:18:25 |
Jedi Forum : Modérateur Association : Membre fondateur Arrivé(e) le : 08-01-2005 Nombre de messages : 4030 |
Je crains tamiel, que tu n'ais lu un peu vite. Il s'agit d'une racine carrée et pas d'une division. Quant aux nombre de caractères, ovni cherche le nombre de caractères différents. ovni, vu que c'est un besoin peu courant, j'ai peur que tu ne doives coder toi même cette fonction. ------------------------------------- C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon - |
|
|
#5 Message posté le : 17-04-2007 à 14:25:26 |
Hobbit Forum : Inscrit Association : Arrivé(e) le : 17-10-2003 Nombre de messages : 1067 |
Bon ok je sors ------------------------------------- If you don't know, ask manpage ! |
|
|
#6 Message posté le : 18-04-2007 à 20:11:11 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 16-01-2003 Nombre de messages : 242 |
ok oui j'ai pu faire ca assez simplement : $nb = strlen($chaine); //nb de chiffre de la chaine
$num[$n] = 0;
for ($n=0; $n<10; $n++) // boucle pr chaque chiffre (de 0 a 9)
{
for ($i=0; $i!=$nb; $i++) //boucle pr chaque chiffre de la chaine
{
if ($chaine{$i} == $n)
{
$num[$n] = 1;
}
}
}
$total = $num[0]+$num[1]+$num[2]+$num[3]+$num[4]+$num[5]+$num[6]+$num[7]+$num[8]+$num[9];------------------------------------- |
|
|
#7 Message posté le : 18-04-2007 à 21:35:14 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2085 |
Si ta chaîne est un nombre et que tu veux savoir quels chiffres elle contient, tu dois pouvoir éviter le déca-parcours. Regarde ça : strlength=strlength(str);
for(int i=0; i<strlength; i++)
num[$str{$i}] = 1;
for(int i=0; i<10; i++)
total += num[$i];
tu devrais même pouvoir faire ça avec des booleans : strlength=strlength(str);
for(int i=0; i<strlength; i++)
estpresent[$str{$i}] = true;
for(int i=0; i<10; i++)
if(estpresent[$i]) total++;
PS : ça fait longtemps que je n'ai pas fait de PHP. --Message édité par Azollyx le 18-04-2007 à 21:38:12-- ------------------------------------- toto |
| Page : [1] |
Forum » Serveur, Réseaux et Programmation » fonction is_int() en php incompréhensible!! |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages