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

📄 num.txt

📁 显示数据处理(拆数字).mcu控制LCD显示数字时的拆数程序
💻 TXT
字号:
uchar xdata intbuf[16]={ '\0'};

/*----------------------------------------------------------------------------
     显示数据处理(拆数字) 
	 inum:要拆的数;
	 将一个int型数据转化成ascii码字符串,结尾以'\0'结束,并将结果存于intbuf(全局
	 变量数组,可在任何地方被调用)
-----------------------------------------------------------------------------*/ 
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型转化成字符串算法
		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数组由后向前数第fbit位插入小数点'.',在系统避免用浮点数运算场合下,用long型
数据的乘除得到运算结果,再在结果中取小数位比如,32/456结果的显示处理可以如此:将32乘
10000,再除以456,将结果(int型数据)用puti()处理,此时是整数,再调用putf(4),保留四位小
数即可,这样处理比调用浮点运算+浮点显示要快得多
-----------------------------------------------------------------------------*/ 
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'){			   //去掉小数后面多于的0,在需要保持精度时应该去掉这段程序
			    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';
					         }
				       }
			      }  
-----------------------------------------------------------------------------*/ 
}
/*----------------------------------------------------------------------------
拆浮点数。默认保留3为小数
-----------------------------------------------------------------------------*/ 
void chaishu(float fnum)
{	 
     long data t;
	 char cd;
	 if(fnum>(int)fnum)
	{  t=(long)(fnum*1000);
	      puti(t);
	      putf(3);}
	 else 	   
	puti(fnum);
	
}

⌨️ 快捷键说明

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