如何将负数转化为正数

Mon*_*mar 35 c

我有负浮点数:

a = -0.340515;
Run Code Online (Sandbox Code Playgroud)

将此转换为正数我使用abs()方法:

a = abs(a);
Run Code Online (Sandbox Code Playgroud)

结果是 a = 0.000000;

但我需要结果0.340515.

任何人都可以告诉我如何做到这一点.

Jas*_*oco 81

abs()仅适用于整数.对于浮点,使用fabs()(或者fabs()对于实际上的任何一个,使用具有正确精度的行之一)

  • @DevSolar那时我还年轻愚蠢. (11认同)
  • @Romain:我总是惊叹于人们如何避免自我编码的标准解决方案.与杰森提供的解决方案相比,您的代码有什么优势? (8认同)
  • 如果一个人不太担心脏东西,也可以这样做:`if(a <0.0)a = -a;`. (3认同)

Bhu*_*hta 31

你必须使用:

abs()用于int
fabs()用于double
fabsf()用于float

上面的函数也可以工作,但你也可以尝试这样的东西.

    if(a<0)
    {
         a=-a;
    }
Run Code Online (Sandbox Code Playgroud)

  • + 1 fabsf()浮动.比接受的答案更正确. (4认同)

小智 16

使用float fabsf (float n)float值.

使用double fabs (double n)double值.

使用long double fabsl(long double)long double值.

使用abs(int)int值.


Gab*_*nor 5

嗯,在数学中,要将负数转换为正数,只需将负数乘以 -1即可;

那么你的解决方案可能是这样的:

a = a * -1;
Run Code Online (Sandbox Code Playgroud)

或更短:

a *= -1;
Run Code Online (Sandbox Code Playgroud)