更改PHP中数字的符号?


69

我有几个花车:

-4.50
+6.25
-8.00
-1.75

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

-4.50
-6.25
-8.00
-1.75

我也需要一种相反的方法

如果浮点为负,则使其为正。


请注意,反向听起来并不像第一个相反。如果将第一组数字的所有符号都更改为负号,然后将它们全部翻转为正号,那么您将没有开始使用的数字。
Progrock

Answers:


183

琐碎的

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

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

$num = -1 * abs($num)

正如@VegardLarsen所说,

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

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

“如果浮动为负数,则使其为正数。”

为了更改数字的符号,您可以简单地执行以下操作:

$num = 0 - $num;

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


操作,是的,很抱歉,只是取消了顺序:)
drAlberT

2
哈,好吧……有一秒钟我在怀疑自己的理智。
丹涛

为何无论变量具有更高的性能,都应该获取变量的绝对值,然后将其求反并将其重新分配给该变量?
Gumbo

1
我可能是错的,但是我很确定,由于您是在某些条件($ num为正)而不是其他条件($ num <= 0)下执行操作,因此您始终将使用if语句某处。abs($ num)不仅执行$ num =($ num> = 0)吗?$ num:-$ num; 在引擎盖下?
丹涛

1
没错,但是它将在较低级别的C语言中执行。通过PHP,而不是在PHP中
drAlberT


31

像这样的琐碎事情怎么样:

  • 反转:

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

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

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

14

重新编辑:“另外,我还需要一种相反的方法,如果浮点为负,则使其为正”

$number = -$number;

将数字改为相反。


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); }

2
为什么按原样包装abs()?不。
drAlberT



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.