我的负浮点数为:
a = -0.340515;
将其转换为正数我使用abs()方法:
a = abs(a);
结果为a = 0.000000;
但我需要结果为0.340515
。
有谁能告诉我怎么做。
答案 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,则必须:
在执行这些步骤之后,您应该能够使用fabs(a)代替fabsf(a),而fabs(a)仅用于C99或更低版本! (即使是C ++ 98也可以让你使用fab而不是fabsf:P)