Changer le signe d'un nombre en PHP?
Question
J'ai quelques flotteurs:
-4.50
+6.25
-8.00
-1.75
Comment puis-je changer tout cela en flottants négatifs pour qu'ils deviennent:
-4.50
-6.25
-8.00
-1.75
J'ai aussi besoin d'un moyen de faire l'inverse
Si le flottant est négatif, faites-en un positif.
La solution
Un trivial
$num = $num <= 0 ? $num : -$num ;
ou la meilleure solution, à mon humble avis:
$num = -1 * abs($num)
Comme @VegardLarsen a posté,
la multiplication explicite peut être évitée par souci de brièveté mais je préfère la lisibilité à la brièveté
Je suggère d'éviter si / else (ou un opérateur ternaire équivalent), en particulier si vous devez manipuler un certain nombre d'éléments (dans une boucle ou à l'aide d'une fonction lambda ), car cela affecterait les performances.
"Si le flottant est négatif, faites-en un positif."
Pour changer le signe d'un nombre, vous pouvez simplement faire:
$num = 0 - $num;
ou, multipliez-le par -1, bien sûr:)
Autres conseils
$float = -abs($float);
Que diriez-vous de quelque chose de trivial comme:
-
inversion:
$num = -$num;
-
convertissant uniquement le positif en négatif:
if ($num > 0) $num = -$num;
-
ne convertissant que le négatif en positif:
if ($num < 0) $num = -$num;
La modification: "J'ai également besoin d'un moyen de faire l'inverse. Si le flottant est négatif, faites-en un positif" /
$number = -$number;
change le nombre en son opposé.
Je pense que la réponse de Gumbo est très bien. Certaines personnes préfèrent cette expression de fantaisie qui fait la même chose:
$int = (($int > 0) ? -$int : $int);
MODIFIER : il semble que vous recherchiez une fonction qui rendrait les négatifs également. Je pense que ces réponses sont les plus simples:
/* I am not proposing you actually use functions called
"makeNegative" and "makePositive"; I am just presenting
the most direct solution in the form of two clearly named
functions. */
function makeNegative($num) { return -abs($num); }
function makePositive($num) { return abs($num); }
function positive_number($number)
{
if ($number < 0) {
$number *= -1;
}
return $number;
}
function invertSign($value)
{
return -$value;
}
utilisant alberT et la solution Dan Tao:
négatif à positif et vice-versa
$num = $num <= 0 ? abs($num) : -$num ;