如何将负数转化为正数

时间:2011-01-20 09:52:03

标签: c

我的负浮点数为:

a = -0.340515;

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

a = abs(a);

结果为a = 0.000000;

但我需要结果为0.340515

有谁能告诉我怎么做。

9 个答案:

答案 0 :(得分:77)

abs()仅适用于整数。对于浮点数,请使用fabs()(或其中一个fabs()行,其精确度与实际值相同)

答案 1 :(得分:29)

你必须使用:

用于 int 的绝对()用于的fabs()
fabsf( )浮动

上面的功能也可以,但你也可以尝试这样的。

    if(a<0)
    {
         a=-a;
    }

答案 2 :(得分:15)

float fabsf (float n)用于float值。

double fabs (double n)用于double值。

long double fabsl(long double)用于long double值。

abs(int)用于int值。

答案 3 :(得分:1)

floor a;
floor b;
a = -0.340515;

那该怎么办?

b = 65565 +a;
a = 65565 -b;

if(a < 0){
a = 65565-(65565+a);}

答案 4 :(得分:0)

如上所述,您必须根据整数类型使用abs()的某个变体。

但是我想定义一个像:

的宏
#define POSITIVE(n) ((n) < 0 ? 0 - (n) : (n))

这样我就可以传递任何价值,特别是在不确定标志的时候,并且总是得到肯定的。

答案 5 :(得分:0)

a *= (-1);

问题解决了。如果有较小的解决方案,那么为什么你们要寻求复杂的解决方案。也请指示人们使用基本逻辑,因为只有这样人们才能训练他们的编程逻辑。

答案 6 :(得分:0)

好吧,在数学中将负数转换为正数,您只需将负数乘以 -1;

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

a = a * -1;

或更短:

a *= -1;

答案 7 :(得分:0)

这是我想到的唯一方法。

//positive to minus
int a = 5; // starting with 5 to become -5
int b = int a * 2; // b = 10
int c = a - b; // c = - 5;
std::cout << c << endl;
//outputs - 5


 //minus to positive
int a = -5; starting with -5 to become 5
int b = a * 2; 
// b = -10
int c = a + b 
// c = 5
std::cout << c << endl;
//outputs 5

功能示例

int b = 0;
int c = 0;


int positiveToNegative (int a) {
    int b = a * 2;
    int c = a - b;
    return c;
}

int negativeToPositive (int a) { 
    int b = a * 2;
    int c = a + b;
    return c; 
}

答案 8 :(得分:-2)

为什么要使用奇怪的硬命令,可以使用:

if(a < 0)
    a -= 2a;

if语句显然仅适用于您不确定该号码是正数还是负数的情况。

否则您必须使用此代码:

a = abs(a) // a is an integer
a = fabs(a) // a is declared as a double
a = fabsf(a) // a is declared as a float (C++ 11 is able to use fabs(a) for floats instead of fabs)

要激活C ++ 11(如果您使用Code :: Blocks,则必须:

  1. 打开Code :: Blocks(推荐版本:13.12)。
  2. 转到设置 - &gt;编译器。
  3. 确保您使用的编译器是GNU GCC Compiler。
  4. 单击“编译器设置”,在打开的选项卡中单击“编译器标志”
  5. 向下滚动,直到找到:g ++遵循C ++ 11 ISO C ++语言标准[-std = c ++ 11]。检查一下然后点击OK按钮。
  6. 重启Code :: Blocks然后你就好了!
  7. 在执行这些步骤之后,您应该能够使用fabs(a)代替fabsf(a),而fabs(a)仅用于C99或更低版本! (即使是C ++ 98也可以让你使用fab而不是fabsf:P)