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 flotteur est négatif, faites-en un positif.
Un trivial
$num = $num <= 0 ? $num : -$num ;
ou, la meilleure solution, à mon humble avis:
$num = -1 * abs($num)
Comme l'a signalé @VegardLarsen,
la multiplication explicite peut être évitée pour la brièveté mais je préfère la lisibilité à la brièveté
Je suggère d'éviter if/else (ou un opérateur ternaire équivalent), surtout si vous devez manipuler un certain nombre d'éléments (en boucle ou en utilisant un fonction lambda), car cela affectera les performances.
"Si le flotteur 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 :)
$float = -abs($float);
Que diriez-vous de quelque chose de trivial comme:
inverser:
$num = -$num;
convertir uniquement le positif en négatif:
if ($num > 0) $num = -$num;
convertir uniquement le négatif en positif:
if ($num < 0) $num = -$num;
concernant l'édition: "J'ai aussi besoin d'un moyen de faire l'inverse Si le flotteur est négatif, faites-en un positif"
$number = -$number;
change le nombre en son contraire.
Je pense que la réponse de Gumbo est très bien. Certaines personnes préfèrent cette expression fantaisiste qui fait la même chose:
$int = (($int > 0) ? -$int : $int);
EDIT : Apparemment, vous recherchez une fonction qui rendra également les négatifs positifs. 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;
}