我有一些浮点数:
-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(或等效的三元运算符),特别是如果您必须处理一些项目(在循环中或使用lambda函数),因为它会影响性能。
"如果浮点数为负数,则将其变为正数。"
要改变数字的符号,您只需执行以下操作:
$num = 0 - $num;
或者,当然也可以将其乘以-1 :)
-1 * (0 - $num)
等于 (-1 * 0) - (-1 * $num)
等于 1 * $num
。 - Gumbo$float = -abs($float);
$float = abs($float);
。 - Frits可以考虑一些简单的事情,比如:
反转:
$num = -$num;
将仅为正数转换为负数:
if ($num > 0) $num = -$num;
将负数转换为正数:
if ($num < 0) $num = -$num;
关于编辑:"同时我需要一种方法来实现反向操作,即将负数浮点数转换为正数"
$number = -$number;
将数字变为它的相反数。
我认为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); }
function positive_number($number)
{
if ($number < 0) {
$number *= -1;
}
return $number;
}
function invertSign($value)
{
return -$value;
}
这里有一个简单的可重用代码,可以反转 int、float、double 或 decimal
的符号。
如果值为正数,则该方法将返回负数,反之亦然。
function inverseSign($value)
{
return $value * (-1);
}
使用alberT和Dan Tao的解决方案:
将负数转换为正数,反之亦然
$num = $num <= 0 ? abs($num) : -$num ;