75

我有几个花车:

-4.50
+6.25
-8.00
-1.75

如何将所有这些更改为负浮点数,使它们变为:

-4.50
-6.25
-8.00
-1.75

我也需要一种方法来做相反的事情

如果浮点数为负数,则将其设为正数。

4

9 回答 9

201

一个琐碎的

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

或者,更好的解决方案,恕我直言:

$num = -1 * abs($num)

正如@VegardLarsen 所发布的,

显式乘法可以避免简短,但我更喜欢可读性而不是简短

我建议避免使用 if/else(或等效的三元运算符),尤其是在您必须操作多个项目(在循环中或使用lambda 函数)时,因为它会影响性能。

“如果浮点数为负数,则将其设为正数。”

要更改数字的符号,您只需执行以下操作:

$num = 0 - $num;

或者,当然是乘以-1 :)

于 2009-09-17T11:03:41.407 回答
55
$float = -abs($float);
于 2009-09-17T11:05:31.607 回答
37

像这样微不足道的事情怎么样:

  • 反转:

    $num = -$num;
    
  • 仅将正数转换为负数:

    if ($num > 0) $num = -$num;
    
  • 仅将负数转换为正数:

    if ($num < 0) $num = -$num;
    
于 2009-09-17T10:58:59.797 回答
15

重新编辑:“我还需要一种方法来做相反的事情如果浮动是负数,让它成为正数”

$number = -$number;

将数字更改为相反的数字。

于 2009-09-17T11:08:35.830 回答
3

我认为Gumbo的回答很好。有些人更喜欢这种花哨的表达方式,它做同样的事情:

$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); }
于 2009-09-17T11:05:35.350 回答
2
function positive_number($number)
{
    if ($number < 0) {
        $number *= -1;
    }

   return $number;
}
于 2015-02-25T13:56:46.533 回答
0
function invertSign($value)
{
    return -$value;
}
于 2013-01-10T14:36:03.070 回答
0

gmp_neg - 否定数

是自版本 4 以来的 PHP 函数,它允许您在 GMP PHP API 下对数字求反。您可以在这里了解更多信息https://www.php.net/manual/en/ref.gmp.php

<?php
$neg1 = gmp_neg("1");
echo gmp_strval($neg1) . "\n";
$neg2 = gmp_neg("-1");
echo gmp_strval($neg2) . "\n";
?>
于 2021-07-13T18:57:08.457 回答
-2

使用 aberT 和 Dan Tao 解决方案:

负转正,反之亦然

$num = $num <= 0 ? abs($num) : -$num ;
于 2016-02-12T18:30:09.967 回答