J'ai ce code PHP :
$entityElementCount = (-($highScore-$totalKeywordCount))/0.29;
Ce que je veux savoir, c'est comment vérifier si $entityElementCount est un nombre entier (2, 6, ...) ou partiel (2,33, 6,2, ...).
Merci !
J'ai ce code PHP :
$entityElementCount = (-($highScore-$totalKeywordCount))/0.29;
Ce que je veux savoir, c'est comment vérifier si $entityElementCount est un nombre entier (2, 6, ...) ou partiel (2,33, 6,2, ...).
Merci !
Je sais que c'est vieux, mais j'ai pensé que je devais partager quelque chose que je viens de trouver :
Utilisez fmod et vérifier si 0
$entityElementCount = (-($highScore-$totalKeywordCount))/0.29;
if (fmod($entityElementCount,1) !== 0.0) {
echo 'Not a whole number!';
} else {
echo 'A whole number!';
}
fmod est différent de % car si vous avez une fraction, % ne semble pas fonctionner pour moi (il renvoie 0...par exemple, echo 9.4 % 1;
produira 0
). Avec fmod, vous obtiendrez la partie fractionnée. Par exemple :
echo fmod(9.4, 1);
La sortie sera 0.4
J'utiliserais intval comme ceci :
if($number === intval($number)) {
}
Tests :
var_dump(10 === intval(10)); // prints "bool(true)"
var_dump("10" === intval("10")); // prints "bool(false)"
var_dump(10.5 === intval(10.5)); // prints "bool(false)"
var_dump("0x539" === intval("0x539")); // prints "bool(false)"
1)
if(floor($number) == $number) { // Currently most upvoted solution:
Tests :
$number = true;
var_dump(floor($number) == $number); // prints "bool(true)" which is incorrect.
2)
if (is_numeric($number) && floor($number) == $number) {
Une affaire de coin :
$number = "0x539";
var_dump(is_numeric($number) && floor($number) == $number); // prints "bool(true)" which depend on context may or may not be what you want
3)
if (ctype_digit($number)) {
Tests :
var_dump(ctype_digit("0x539")); // prints "bool(false)"
var_dump(ctype_digit(10)); // prints "bool(false)"
var_dump(ctype_digit(0x53)); // prints "bool(false)"
La méthode de base, comme l'a dit Chacha, est la suivante .
if (floor($number) == $number)
Cependant, les types à virgule flottante ne peuvent pas stocker les nombres avec précision, ce qui signifie que 1 pourrait être stocké comme 0,999999997. Cela signifie bien sûr que la vérification ci-dessus échouera, car le chiffre sera arrondi à 0, même si, dans votre cas, il est de 0,999999997. assez proche à 1 pour être considéré comme un nombre entier. Essayez donc quelque chose comme ceci :
if (abs($number - round($number)) < 0.0001)
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.