?? num.txt
字號:
uchar xdata intbuf[16]={ '\0'};
/*----------------------------------------------------------------------------
顯示數(shù)據(jù)處理(拆數(shù)字)
inum:要拆的數(shù);
將一個int型數(shù)據(jù)轉(zhuǎn)化成ascii碼字符串,結(jié)尾以'\0'結(jié)束,并將結(jié)果存于intbuf(全局
變量數(shù)組,可在任何地方被調(diào)用)
-----------------------------------------------------------------------------*/
void puti(long data inum)
{
long data t;
uchar data c=0;
bit flag=1;
t=100000000L;
for(;c<16;c++)
intbuf[c]='\0';
c=0;
if(inum<0){
intbuf[0]='-';
c++;
inum=-inum;
}
for(;t>=10;t/=10){//此為將int型轉(zhuǎn)化成字符串算法
if(t==10){
intbuf[c]=inum/t+'0';
intbuf[++c]=inum%t+'0';
intbuf[++c]='\0';
break;
}
if(inum<t&flag)
continue;
else {
flag=0;
intbuf[c]=inum/t;
inum-=(long)(intbuf[c]) * t;
intbuf[c]+='0';
c++;
}
}
}
/*----------------------------------------------------------------------------
將intbuf數(shù)組由后向前數(shù)第fbit位插入小數(shù)點'.',在系統(tǒng)避免用浮點數(shù)運算場合下,用long型
數(shù)據(jù)的乘除得到運算結(jié)果,再在結(jié)果中取小數(shù)位比如,32/456結(jié)果的顯示處理可以如此:將32乘
10000,再除以456,將結(jié)果(int型數(shù)據(jù))用puti()處理,此時是整數(shù),再調(diào)用putf(4),保留四位小
數(shù)即可,這樣處理比調(diào)用浮點運算+浮點顯示要快得多
-----------------------------------------------------------------------------*/
void putf(uchar fbit){
char idata t0;
char idata pf;
pf=strlen(intbuf)-fbit;
if(intbuf[0]!='-'){
if(pf>0){
t0=strlen(intbuf);
for(pf=t0;pf>t0-fbit;pf--){
intbuf[pf]=intbuf[pf-1];
}
intbuf[pf]='.';
}
else{
pf=strlen(intbuf)-1;
for(t0=fbit+1;t0>=0;t0--,pf--){
if(pf>=0)
intbuf[t0]=intbuf[pf];
else
intbuf[t0]='0';
}
intbuf[1]='.';
pf=1; //去0用
}
}
else{
if(pf>1){
t0=strlen(intbuf);
for(pf=t0;pf>t0-fbit;pf--){
intbuf[pf]=intbuf[pf-1];
}
intbuf[pf]='.';
}
else{
pf=strlen(intbuf)-1;
for(t0=fbit+2;t0>=1;t0--,pf--){
if(pf>=1)
intbuf[t0]=intbuf[pf];
else
intbuf[t0]='0';
}
intbuf[0]='-';
intbuf[2]='.';
pf=2; //去0用
}
}
/*----------------------------------------------------------------------------
if(intbuf[pf+3]=='0'){ //去掉小數(shù)后面多于的0,在需要保持精度時應(yīng)該去掉這段程序
intbuf[pf+3]='\0';
if(intbuf[pf+2]=='0')
{ intbuf[pf+2]='\0';
if(intbuf[pf+1]=='0')
{intbuf[pf+1]='\0';
intbuf[pf] ='\0';
}
}
}
-----------------------------------------------------------------------------*/
}
/*----------------------------------------------------------------------------
拆浮點數(shù)。默認(rèn)保留3為小數(shù)
-----------------------------------------------------------------------------*/
void chaishu(float fnum)
{
long data t;
char cd;
if(fnum>(int)fnum)
{ t=(long)(fnum*1000);
puti(t);
putf(3);}
else
puti(fnum);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -