c++中如何求一个数的绝对值

2025-03-23 15:14:35
推荐回答(5个)
回答1:

求不同类型数字的绝对值用不同的方法,方法如下:

第一种:int abs(int   i) 返回整型参数i的绝对值 ;

第二种:double cabs(struct   complex   znum) 返回复数znum的绝对值 ;    

第三种:double fabs(double   x) 返回双精度参数x的绝对值    ; 

第四种:long labs(long   n) 返回长整型参数n的绝对值 。

例子:

#include  

#include//C语言是math.h  

using namespace std;  

void main(void)  

{  

int a=1,b=10;  

double e=1,f=10;  

float c=1,d=10;  

cout<<"c-d="<

cout<<"e-f="<

cout<<"b-a="<

cin.get();  

}

返回结果:

c-d=9

e-f=9

b-a=9

回答2:

自己写一个宏吧,很容易的。所谓取绝对值,也就是在它小于零的时候取它的负值嘛,很简单:
#define _ABS(x) ((x) > 0 ? (x) : -(x))

你的问题在于,abs函数的参数是整形的,而你输入的参数是浮点型的,因此经过绝对值转换后,会被强行取整。
前面有人给你提供了一个函数,那个函数有同样的问题。所以我建议你用我上面写的这个宏,支持任意类型。
其实还有一种比宏更好的方法是使用模板函数,可能对你来说比宏更难以理解,因此这儿我就不介绍了。
其实1楼的方法,就是用fabs也能解决,不过,这么简单的运算就用库函数貌似不太值得。
此外,顺便提一个与本问题无关的问题,对浮点型数据进行==的比较是没有任何意义的,理由这儿我就不说了,你可以自己查一下相关资料。同理,对浮点型数据进行>=运算也无意义。

回答3:

求不同类型数字的绝对值用不同的方法,方法如下:
第一种:int abs(int i) 返回整型参数i的绝对值
第二种:double cabs(struct complex znum) 返回复数znum的绝对值
第三种:double fabs(double x) 返回双精度参数x的绝对值
第四种:long labs(long n) 返回长整型参数n的绝对值
例子:

#include
#include//C语言是math.h

using namespace std;
void main(void)
{
int a=1,b=10;
double e=1,f=10;
float c=1,d=10;

cout<<"c-d="<cout<<"e-f="<cout<<"b-a="<cin.get();
}
返回结果:
c-d=9
e-f=9
b-a=9

回答4:

七年级数学易错题一个数的绝对值等于它的平方,这个数是 ( )。

回答5:

找不到库函数自己写一个呗..
int absoluteValue(int a)
{
if (a < 0)
{
return -a;
}
return a;
}