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.

Était-ce utile?

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 ;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top