2009-09-17 13 views
39

Mam kilka pływaków:Zmieniając znak liczby w PHP?

-4.50 
+6.25 
-8.00 
-1.75 

Jak mogę zmienić wszystkie te negatywne pływaków tak stają się:

-4.50 
-6.25 
-8.00 
-1.75 

Również muszę sposób zrobić odwrotnej

jeśli Pływak jest ujemny, sprawiają, że jest pozytywny.

+1

pływaki;) Mój złe. – dotty

Odpowiedz

108

Trywialny

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

lub lepszym rozwiązaniem, IMHO:

$num = -1 * abs($num) 

Jak @VegardLarsen opublikował,

wyraźne mnożenie można uniknąć dla krótkości, ale wolę czytelność niż krótkość ss

Proponuję aby uniknąć if/else (lub odpowiednik operatora trójskładnikowych), zwłaszcza jeśli masz do manipulowania liczbę elementów (w pętli lub za pomocą funkcji lambda), jak to wpłynie na wydajność.

"Jeśli wartość zmiennoprzecinkowa jest ujemna, spraw, aby była pozytywna."

Aby zmienić znak liczby można po prostu zrobić:

$num = 0 - $num; 

lub pomnożyć przez -1, oczywiście :)

+1

Czy to nie jest wstecz? –

+0

Ops, tak, przepraszam, właśnie odwróciłem zamówienie :) – drAlberT

+1

Ha, ok ... przez sekundę wątpiłem w swoje własne zdrowie psychiczne. –

22

Jak o czymś trywialnym jak:

  • odwracającego:

    $num = -$num; 
    
  • konwersji tylko pozytywne pod negatywne:

    if ($num > 0) $num = -$num; 
    
  • konwertazy tylko negatywne w pozytywne:

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

myślę Gumbo na odpowiedź jest w porządku. Niektórzy ludzie preferują ten fantazyjny wyraz, który robi to samo:

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

EDIT: Podobno szukasz funkcji, które uczynią negatywów pozytywne, jak również.Myślę, że te odpowiedzi są najprostsze:

/* 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

dlaczego zawijać _abs() _ kiedy jest używany? nah. – drAlberT

9

re edit: „Również muszę sposób to zrobić biegu wstecznego, jeżeli pływak jest negatywny, sprawiają, że pozytywny”

$number = -$number; 

zmienia liczbę na przeciwną.

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

Dzięki za skomentowanie, dlaczego przegłosowałeś. Naprawdę użyteczne. –

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

    return $number; 
} 
-2

użyciu Albert rozwiązanie Dan Tao:

ujemnej na dodatnią i odwrotnie

$num = $num <= 0 ? abs($num) : -$num ; 
Powiązane problemy