⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmath.c

📁 可以在嵌入式应用中
💻 C
字号:
#include <CsAgb.h>
#include <math.h>
double power10(double x)
{
	return pow(10,x);
}

double abs(double x)
{
	return (x<0?0-x:x);
}

int get_int(double x)
{
	return (x<0?(-1-(int)abs(x)):(int)x);
}

int str_to_int_num(char *exp)
{
	int res=0;
	u8 i=0;
	u8 flag=0;
	if (exp[i]=='-') {flag=1;i++;}
	while(exp[i]!='\0')
	{
		res=res*10+exp[i]-48;
		i++;
	}
	return (flag?0-res:res);
}

double str_to_num(char *exp)
{
	u8 i=0;
	u8 dot=0;
	u8 index=0;
	u8 str_len=0;
	int int_n=0;
	double float_n=0;
	int exp_n=0;
	double mpow=0.1;
	char temp[50];
	while (exp[i]!='\0')
	{
		if (exp[i]=='.') dot=i;
		else if(exp[i]=='E' || exp[i]=='e') index=i;
		i++;
	}
	str_len=i;
	if (dot>index && index) return 0.0;//出错啦
	if (index==0) index=str_len;
	if (dot==0) dot=index;
	for (i=0;i<dot;i++) temp[i]=exp[i];
	temp[dot]='\0';
	int_n=str_to_int_num(temp);//获得整数部分
	for (i=dot+1;i<index;i++)
	{
		float_n=float_n+(exp[i]-48)*mpow;
		mpow=mpow*0.1;
	}
	if (index!=str_len)
	{
		i=index+1;
		while (exp[i]!='\0')
		{
			temp[i-index-1]=exp[i];
			i++;
		}
		temp[i-index-1]='\0';
		exp_n=str_to_int_num(temp);
	}
	if (int_n<0) float_n=int_n-float_n;
	else float_n=float_n+int_n;
	return float_n*pow(10,exp_n);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -