整数与小数到字符型的指针存储转换方法

整型到字符型

num的范围为-32768~32767,也可以将num更改为其它长度的整形变量,从而改变num的取值范围

//num的范围为-32768~32767
void int_To_str(int16_t num,char *str_addr)
{
	uint8_t i=0,Negative_Flag=0;
	if(num<0)
	{
		Negative_Flag=1;
		num=-num;
	}
	if(num==0)
	{
		str_addr[i++]=0+'0';
	}
	else
	{
		//将数字转换为字符存储在str_addr指针所指地址中
		while(num>0)
		{
			str_addr[i++]=num%10+'0';
			num=num/10;
		}
	}
	
	if(Negative_Flag)
	{
		str_addr[i++]='-';
	}
	//添加结束标志位
	str_addr[i]='\0';
	//除结束标志位外,对所有数据翻转
	for(uint8_t TurnFlag=0;TurnFlag

浮点型到字符型

下面是浮点型变量转换为字符型的代码,在使用中发现,转换后存储在指针中的量会与num存在一定的偏差,例如设置的num为2.145,存在指针中的值可能为2.144。

void float_To_str(float num,char *str_addr,uint8_t DecimalLens)
{
	uint8_t i=0;
	int16_t integer=0;
	float decimal=0;
	//取出num的整数部分
	integer=(int16_t)num;
	//去除num的小数部分
	decimal=num-integer;
	//假如num=-2.134,则integer=-2,此时算出的decimal=-2.134-(-2)=-0.134
	//负数的小数部分仍为负,此步骤是为了使decimal始终为正
	if(decimal<0)
		decimal=-decimal;
	//对num的整数部分始终取正值
	if(integer<0)
	{
		integer=-integer;
	}
	//对整数部分为零时做特殊处理
	if(integer==0)
	{
		str_addr[i++]=0+'0';
	}
	else
	{
		//将数字转换为字符存储在str_addr指针所指地址中
		while(integer>0)
		{
			str_addr[i++]=integer%10+'0';
			integer=integer/10;
		}
	}
	//如果num为负,则添加符负号
	if(num<0)
	{
		str_addr[i++]='-';
	}
	//对整数部分和负号进行翻转
	for(uint8_t TurnFlag=0;TurnFlag

你可能感兴趣的:(stm32,单片机)