2009-09-17 4 views
39

J'ai quelques flotteurs:Changer le signe d'un nombre en PHP?

-4.50 
+6.25 
-8.00 
-1.75 

Comment puis-je changer tout cela à flotteurs négatifs afin qu'ils deviennent:

-4.50 
-6.25 
-8.00 
-1.75 

Je dois aussi une façon de faire l'inverse

Si la float est un négatif, en faire un positif.

+1

flotteurs;) Mon mauvais. – dotty

Répondre

108

Un trivial

$num = $num <= 0 ? $num : -$num ; 

ou, la meilleure solution, à mon humble avis:

$num = -1 * abs($num) 

Comme @VegardLarsen a mis en ligne,

la multiplication explicite peut être évité pour la brièveté, mais je préfère la lisibilité sur shortne ss

Je suggère d'éviter if/else (ou équivalent opérateur ternaire), surtout si vous devez manipuler un certain nombre d'éléments (dans une boucle ou en utilisant une fonction lambda), car elle aura une incidence sur la performance.

"Si le flotteur est négatif, faites-en un positif."

Pour changer le signe d'un numéro, vous pouvez simplement faire:

$num = 0 - $num; 

ou, multiplier par -1, bien sûr :)

+1

N'est-ce pas à reculons? –

+0

Ops, oui désolé, juste inversé l'ordre :) – drAlberT

+1

Ha, ok ... pendant une seconde là, je doutais de ma propre santé mentale. –

22

Que diriez-vous quelque chose de trivial comme:

  • inversante:

    $num = -$num; 
    
  • conversion positif seulement en négatif:

    if ($num > 0) $num = -$num; 
    
  • conversion seulement négatif en positif:

    if ($num < 0) $num = -$num; 
    
41
$float = -abs($float); 
3

Je pense Gumbo de la réponse est très bien. Certaines personnes préfèrent cette expression de fantaisie qui fait la même chose:

$int = (($int > 0) ? -$int : $int); 

EDIT: Apparemment, vous êtes à la recherche d'une fonction qui fera des négatifs positifs aussi bien.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); } 
+1

pourquoi enrouler _abs() _ lorsqu'il est utilisé tel quel? nah. – drAlberT

9

re l'édition: «J'ai besoin aussi une façon de faire l'inverse Si le flotteur est un négatif, en font un positif »

$number = -$number; 

change le nombre à son opposé.

-1
function invertSign($value) 
{ 
    return -$value; 
} 
+0

Merci d'avoir commenté la raison pour laquelle vous avez attribué la note. Vraiment utile. –

2
function positive_number($number) 
{ 
    if ($number < 0) { 
     $number *= -1; 
    } 

    return $number; 
} 
-2

utilisant albert et solution Dan Tao:

négatif au positif et vice versa

$num = $num <= 0 ? abs($num) : -$num ; 
Questions connexes