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 !
Ce qui semble être une approche simple serait d'utiliser le module (%) pour déterminer si une valeur est entière ou non.
x = y % 1
si y n'est pas un nombre entier, le résultat n'est pas un zéro (0). Un test serait donc le suivant :
if (y % 1 == 0) {
// this is a whole number
} else {
// this is not a whole number
}
var isWhole = (y % 1 == 0? true: false); // to get a boolean return.
En admettant que cela considère un nombre négatif comme un nombre entier, il suffit alors d'entourer ABS() y
de toujours tester sur le positif.
J'utilise toujours le typage pour vérifier si les variables contiennent un nombre entier, pratique quand on ne connaît pas l'origine ou le type de la valeur.
if ((string) $var === (string) (int) $var) {
echo 'whole number';
} else {
echo 'whatever it is, it\'s something else';
}
Dans votre cas particulier, j'utiliserais is_int()
if (is_int($var) {
echo 'integer';
}
Une solution simple pour les nombres entiers positifs uniquement. Cela peut ne pas fonctionner pour tout.
$string = '0x539';
$ceil = ceil($string);
if($ceil < 1){
$ceil = FALSE; // or whatever you want i.e 0 or 1
}
echo $ceil; // 1337
Vous pouvez utiliser floor() au lieu de ceil() si vous le souhaitez.
function isInteger($value)
{
// '1' + 0 == int, '1.2' + 0 == float, '1e2' == float
return is_numeric($value) && is_int($value + 0);
}
function isWholeNumber($value)
{
return is_numeric($value)
&& (is_int($value + 0)
|| (intval($value + 0) === intval(ceil($value + 0))));
}
Si vous voulez vérifier à la fois les nombres entiers et décimaux, vous pouvez procéder comme suit :
if (isInteger($foo))
{
// integer as int or string
}
if (isWholeNumber($foo))
{
// integer as int or string, or float/double with zero decimal part
}
else if (is_numeric($foo))
{
// decimal number - still numeric, but not int
}
Cela vérifiera correctement votre nombre sans l'arrondir, le convertir en int (ce qui, dans le cas d'un nombre décimal, fera perdre la partie décimale) ou faire des calculs. Si, toutefois, vous souhaitez traiter 1.00
comme un nombre entier, alors c'est une toute autre histoire.
Je sais que c'est un vieux post mais c'est une fonction simple qui retourne un nombre entier valide et le transforme en int. Elle renvoie false si elle échoue.
function isWholeNumber($v)
{
if ($v !='' && is_numeric($v) && strpos($v, '.') === false) {
return (int)$v;
}
return false;
}
Utilisation :
$a = 43;
$b = 4.3;
$c = 'four_three';
isWholeNumber($a) // 43
isWholeNumber($b) // false
isWholeNumber($c) // false
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.