Вопрос

У меня есть несколько поплавков:

-4.50
+6.25
-8.00
-1.75

Как я могу изменить все это на отрицательные значения с плавающей точкой, чтобы они стали:

-4.50
-6.25
-8.00
-1.75

Также мне нужен способ сделать обратное

Если значение с плавающей точкой отрицательное, сделайте его положительным.

Это было полезно?

Решение

Тривиально

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

или, лучшее решение, ИМХО:

$num = -1 * abs($num)

Как писал @VegardLarsen,

  

явного умножения можно избежать для краткости, но я предпочитаю удобочитаемость, а не краткость

Я предлагаю избегать if / else (или эквивалентного тернарного оператора), особенно если вам приходится манипулировать несколькими элементами (в цикле или с помощью лямбда-функции ), так как это повлияет на производительность.

  

" Если число с плавающей точкой является отрицательным, сделайте его положительным. "

Чтобы изменить знак числа, вы можете просто сделать:

$num = 0 - $num;

или, конечно, умножьте его на -1:)

Другие советы

$float = -abs($float);

Как насчет чего-нибудь тривиального, например:

  • переворачивающий:

    $num = -$num;
    
  • преобразование только положительного в отрицательное:

    if ($num > 0) $num = -$num;
    
  • преобразование только негативного в позитивное:

    if ($num < 0) $num = -$num;
    

re the edit: " Мне также нужен способ сделать обратное. Если число с плавающей точкой отрицательное, сделайте его положительным "

$number = -$number;

меняет номер на противоположный.

Я думаю, что ответ Гамбо просто в порядке. Некоторые люди предпочитают это причудливое выражение, которое делает то же самое:

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

РЕДАКТИРОВАТЬ . Судя по всему, вы ищете функцию, которая также делает негативы позитивными. Я думаю, что эти ответы самые простые:

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

используя решения alberT и Dan Tao:

От отрицательного к положительному и наоборот

$num = $num <= 0 ? abs($num) : -$num ;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top