在PHP中更改数字的符号?

在PHP中更改数字的符号?,php,math,numbers,sign,Php,Math,Numbers,Sign,我有几个花车: -4.50 +6.25 -8.00 -1.75 如何将所有这些更改为负浮动,使其成为: -4.50 -6.25 -8.00 -1.75 我还需要一种方法来做相反的事情 如果浮点数是负数,则将其设为正数。一些琐碎的事情怎么样,比如: 反转: $num = -$num; 仅将正值转换为负值: if ($num > 0) $num = -$num; 仅将负数转换为正数: if ($num < 0) $num = -$num; if($num

我有几个花车:

-4.50
+6.25
-8.00
-1.75
如何将所有这些更改为负浮动,使其成为:

-4.50
-6.25
-8.00
-1.75

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


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

一些琐碎的事情怎么样,比如:

  • 反转:

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

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

    if ($num < 0) $num = -$num;
    
    if($num<0)$num=-$num;
    
    • 一件小事

      $num = $num <= 0 ? $num : -$num ;
      
      正如@VegardLarsen所发布的

      由于篇幅较短,可以避免显式乘法,但我更喜欢可读性,而不是篇幅较短

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

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

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

      $num = 0 - $num;
      

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

      我认为秋葵的答案很好。有些人更喜欢这种做同样事情的奇特表达:

      $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); }
      
      重新编辑:“我还需要一种方法来做相反,如果浮动是负数,使其成为正数”

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

      函数正数($number)
      
      function invertSign($value)
      {
          return -$value;
      }
      
      { 如果($number<0){ $number*=-1; } 返回$number; }
      使用alberT和Dan Tao解决方案:

      从负到正,反之亦然

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

      $num=$num Ops,是的,对不起,只是颠倒了顺序:)哈,好的。。。有一秒钟,我怀疑自己的理智。为什么要获取变量的绝对值,反转它并将其重新分配给该变量,无论它是什么值都更有效?我可能是错的,但我非常确定,因为您在某些条件下执行操作($num为正),而不是在其他条件下执行操作($num您是对的,但它将在低级别上执行,用C.By PHP,而不是PHP。为什么按原样使用abs()呢?不。感谢您对为什么否决的评论。真的很有用。我认为这是因为OP最初声明他们只希望正数翻转符号。但问题与含糊不清的插销混淆了:“我还需要一种反转的方法”。请注意,反转听起来不像是第一组数字的反转。如果你将第一组数字的所有符号都改为负数,然后将它们全部反转为正数,你就不会得到开始时的数字。“我还需要一种反转的方法。”“,这个答案只做了一件事…@ReSpawN公平地说,相反的意思就是把
      -
      拿走。也就是说,
      $float=abs($float);
      的值总是负值。应该提到它。
      $number = -$number;
      
      function invertSign($value)
      {
          return -$value;
      }
      
      function positive_number($number)
      {
          if ($number < 0) {
              $number *= -1;
          }
      
         return $number;
      }
      
      $num = $num <= 0 ? abs($num) : -$num ;