2009-09-17 24 views
39

Tôi có một vài nổi:Thay đổi dấu của một số trong PHP?

-4.50 
+6.25 
-8.00 
-1.75 

Làm thế nào tôi có thể thay đổi tất cả những để nổi tiêu cực vì vậy họ trở thành:

-4.50 
-6.25 
-8.00 
-1.75 

Ngoài ra tôi cần một cách để làm điều ngược lại

Nếu float là một tiêu cực, làm cho nó một tích cực.

+1

nổi;) xấu của tôi. – dotty

Trả lời

108

Một tầm thường

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

hay, giải pháp tốt hơn, IMHO:

$num = -1 * abs($num) 

Như @VegardLarsen đã được đăng,

các nhân rõ ràng có thể tránh được cho sự ngắn gọn nhưng tôi thích khả năng đọc qua shortne ss

Tôi đề nghị để tránh if/else (hoặc tương đương điều hành ternary) đặc biệt là nếu bạn phải thao tác một số hạng mục (trong một vòng lặp hoặc sử dụng một hàm lambda), vì nó sẽ ảnh hưởng đến hiệu suất.

"Nếu phao là số âm, làm cho giá trị dương."

Để thay đổi dấu hiệu của một số bạn có thể chỉ cần làm:

$num = 0 - $num; 

hay, nhân nó bằng -1, tất nhiên :)

+1

Đây có phải là số lùi không? –

+0

Ops, có xin lỗi, chỉ cần đảo ngược thứ tự :) – drAlberT

+1

Ha, ok ... trong một giây có tôi đã nghi ngờ sanity của riêng tôi. –

22

Làm thế nào về một cái gì đó tầm thường như:

  • nghịch đảo:

    $num = -$num; 
    
  • chuyển đổi chỉ tích cực vào tiêu cực:

    if ($num > 0) $num = -$num; 
    
  • chuyển đổi chỉ tiêu cực thành tích cực:

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

Tôi nghĩ Gumbo của câu trả lời là tốt. Một số người thích biểu hiện này ưa thích mà làm điều tương tự:

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

EDIT: Rõ ràng bạn đang tìm kiếm một chức năng mà sẽ làm cho âm dương là tốt.Tôi nghĩ rằng những câu trả lời là đơn giản nhất:

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

lý do tại sao để bọc _abs() _ khi được sử dụng như là? nah. – drAlberT

9

tái chỉnh sửa: "Ngoài ra tôi cần một cách để làm điều ngược lại Nếu phao là một tiêu cực, làm cho nó một tích cực"

$number = -$number; 

thay đổi số đối diện của nó.

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

Cảm ơn bạn đã nhận xét lý do bạn downvoted. Thực sự hữu ích. –

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

    return $number; 
} 
-2

sử dụng Albert và giải pháp Dan Tao:

âm sang dương và ngược lại

$num = $num <= 0 ? abs($num) : -$num ; 
Các vấn đề liên quan