📄 rmath.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 + -