LCD1602怎么显示小数?把整数部分与小数部分分离出来?

2024年11月16日 21:59
有1个网友回答
网友(1):

把如下函数加入到你的 代码中:
void gcvt_xx(double change_num,int precision,char *change_array)

以下是测试:

#include

void gcvt_xx(double change_num,int precision,char *change_array)
{
char p[50]="",p1[50]="",k=0;
char i=0,b=0;
double z;
unsigned long y;

if(change_num<0) //判断是否为负数
{
p[k]='-';
change_num=0-change_num;
k++;
}

y=(unsigned long)change_num;
z=change_num-y;
if(y) //反序整数部分p1[]
{
while(y)
{
p1[b]=y%10+0x30;
y/=10;
b++;
}
}
else
p1[0]=0+0x30;

b=strlen(p1); //正序整数部分到p[]
for(i=0;i p[k]=p1[b-1];
for(i=0;i<50;i++)
p1[i]=0;

k=0;
i=0;
p1[k]='.'; //加小数点
k++;
while(i!=precision+1) //正序小数部分p1[]
{
z=z*10;
y=(int)(z);
z-=y;
p1[k]=y+0x30;
k++;
i++;
}

p1[strlen(p1)-1]='\0';
strcat(p,p1);
strcat(change_array,p);
return ;
}

void main()
{
double a=-1234.56734535;
char bb[20]=""; //必须为空
gcvt_xx(a,7,bb);
puts(bb);
}