stl 常用数学函数

1、计算绝对值

计算整数的绝对值:

//定义
int       abs( int n );
long      abs( long n );
long long abs( long long n );
//用法
int main()
{
	int nA = 5, nB = -6;
	nA = std::abs(nA);
	std::cout << nA << std::endl;//5
	nB = std::abs(nB);
	std::cout << nB << std::endl;//6
}

计算浮点数的绝对值:

//定义
float       abs( float arg );
double      abs( double arg );
long double abs( long double arg );

float       fabs ( float arg );
float       fabsf( float arg );
double      fabs ( double arg );
long double fabs ( long double arg );
long double fabsl( long double arg );
//用法
int main()
{
	float fA = -5.5;
	double dB = -9.5;
	float fC = -5.25;
	double dD = -3.21;

	fA = std::abs(fA);
	std::cout << fA << std::endl;//5.5
	dB = std::abs(dB);
	std::cout << dB << std::endl;//9.5
	fC = std::fabs(fC);
	std::cout << fC << std::endl;//5.25
	dD = std::fabs(dD);
	std::cout << dD << std::endl;//3.21
}

2、计算某数的给定次幂

//定义
float       pow ( float base, float exp );
float       powf( float base, float exp );
double      pow ( double base, double exp );
long double pow ( long double base, long double exp );
long double powl( long double base, long double exp );
float       pow ( float base, int iexp );
double      pow ( double base, int iexp );
long double pow ( long double base, int iexp );
//用法
int main()
{
	//求3的2次方
	double dParam1 = 3;
	int nParam2 = 2;
	double dRt = std::pow(3,2);//第一个参数必须为浮点型
	std::cout << dRt << std::endl;//9
}

3、计算平方根

//定义
float       sqrt ( float arg );
float       sqrtf( float arg );
double      sqrt ( double arg );
long double sqrt ( long double arg );
long double sqrtl( long double arg );
//用法
int main()
{
	//求4的平方根
	double dParam = 4;
	double dRt = std::sqrt(dParam);//参数必须为浮点型
	std::cout << dRt << std::endl;//2
}

4、计算立方根

//定义
float       cbrt ( float arg );
float       cbrtf( float arg );
double      cbrt ( double arg );
long double cbrt ( long double arg );
long double cbrtl( long double arg );
//用法
int main()
{
	//求8的立方根
	double dParam = 8;
	double dRt = std::cbrt(dParam);//参数必须为浮点型
	std::cout << dRt << std::endl;//2
}

5、计算正弦

       sinα = 对边 比 斜边

//定义
float       sin ( float arg );
float       sinf( float arg );
double      sin ( double arg );
long double sin ( long double arg );
long double sinl( long double arg );

6、计算余弦

       sinα = 邻边 比 斜边

//定义
float       cos ( float arg );
float       cosf( float arg );
double      cos ( double arg );
long double cos ( long double arg );
long double cosl( long double arg );

7、计算正切

       sinα = 对边 比 邻边

//定义
float       tan ( float arg );
float       tanf( float arg );
double      tan ( double arg );
long double tan ( long double arg );
long double tanl( long double arg );

8、计算反正弦

       通过正弦值求弧度。

//定义
float       asin ( float arg );
float       asinf( float arg );
double      asin ( double arg );
long double asin ( long double arg );
long double asinl( long double arg );

9、计算反余弦

       通过余弦值求弧度。

//定义
float       acos ( float arg );
float       acosf( float arg );
double      acos ( double arg );
long double acos ( long double arg );
long double acosl( long double arg );

10、计算反正切

       通过正切值求弧度。

//定义
float       atan ( float arg );
float       atanf( float arg );
double      atan ( double arg );
long double atan ( long double arg );
long double atanl( long double arg );

11、计算整数相除的商和余数

//定义
std::div_t     div( int x, int y );
std::ldiv_t    div( long x, long y );
std::lldiv_t   div( long long x, long long y );
//用法
int main()
{
	//求整数相除的商和余数
	std::div_t rt = std::div(10,3);
	
	std::cout << "商:" << rt.quot << " 余数:" << rt.rem << std::endl;//商:3 余数:1
}

12、返回两个浮点数的较大者

       比较两个浮点数,返回较大值。

//定义
float       fmax ( float x, float y );
float       fmaxf( float x, float y );
double      fmax ( double x, double y );
long double fmax ( long double x, long double y );
long double fmaxl( long double x, long double y );
//用法
int main()
{
	//返回两个浮点数的较大值
	double dValue1 = 2.5686100;
	double dValue2 = 2.5686300;
	double dRt = std::fmax(dValue1, dValue2);//2.5686300000000002
}

13、返回两个浮点数的较小者

       比较两个浮点数,返回较小值。

//定义
float       fmin ( float x, float y );
float       fminf( float x, float y );
double      fmin ( double x, double y );
long double fmin ( long double x, long double y );
long double fminl( long double x, long double y );

14、计算两个浮点数的正数差

       计算两个浮点数的正数差。

//定义
float       fdim ( float x, float y );
float       fdimf( float x, float y );
double      fdim ( double x, double y );
long double fdim ( long double x, long double y );
long double fdiml( long double x, long double y );
//用法
int main()
{
	//计算两个浮点数的正数差
	std::cout << "std::fdim(4.2,1.1) " << std::fdim(4.2,1.1) << std::endl;//std::fdim(4.2,1.1) 3.1
	std::cout << "std::fdim(1.1, 4.2) " << std::fdim(1.1, 4.2) << std::endl;//std::fdim(1.1, 4.2) 0
	std::cout << "std::fdim(4.2,-1.1) " << std::fdim(4.2, -1.1) << std::endl;//std::fdim(4.2,-1.1) 5.3
	std::cout << "std::fdim(1.1, -4.2) " << std::fdim(1.1, -4.2) << std::endl;//std::fdim(1.1, -4.2) 5.3
}

15、计算 x 与 y 平方和的平方根

float       hypot ( float x, float y );
float       hypotf( float x, float y );
double      hypot ( double x, double y );
long double hypot ( long double x, long double y );
long double hypotl( long double x, long double y );
float       hypot ( float x, float y, float z );
double      hypot ( double x, double y, double z );
long double hypot ( long double x, long double y, long double z );
出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.youkuaiyun.com/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值