/*******************************************
函数名称: Float2Char
函数功能:浮点数转字符串
参 数:无
返回 值: 无
********************************************/
void Float2Char(float value, unsigned char *array)
{
u16 IntegerPart; //整数部分
float DecimalPart;//小数部分
u8 i = 0;
u8 j = 0;
u16 temp;
u8 bit = 0;
//判断正负数
if(value < 0)
{
value =0.0-value;
array[0] = '-';
bit = 1; //标记负数
i++;
}
//分离整数和小数
if(value >= 1)//大于1的浮点数
{
IntegerPart = (u16)value; //传入的值强制转换为整数
}
else
{
IntegerPart = 0;//小于1的浮点数
}
DecimalPart = value - IntegerPart;//获取小数部分
//处理整数部分
if(IntegerPart == 0) //小于1的浮点数
{
if(bit)//如果是负数
{
array[1] = '0';
array[2] = '.';
i = 2;
}
else
{
array[0] = '0';
array[1] = '.';
i = 1;
}
}
else //大于1的浮点数
{
while(IntegerPart > 0)
{
array[i++] = IntegerPart % 10 + '0'; //
IntegerPart /= 10;
}
i--;//退出来记录前一个位置
//修正数据位置
if(bit)//为负数的时候
{
if(i%2==0) //位数为偶数
{
for(j=1; j<=i/2; j++) //最中间的数字位置不变
{
temp = array[j];
array[j] = array[i+1 - j];
array[i+1 - j] = temp;
}
}
else//位数为奇数
for(j=1; j<=(i-1)/2; j++)
{
temp = array[j];
array[j] = array[i+1 - j];
array[i+1 - j] = temp;
}
}
else //为整数
if(i%2==0) //位数为奇数
{
for(j=0; j<i/2; j++) //最中间的数字位置不变
{
temp = array[j];
array[j] = array[i - j];
array[i - j] = temp;
}
}
else//位数为偶数
for(j=0; j<(i+1)/2; j++)
{
temp = array[j];
array[j] = array[i - j];
array[i - j] = temp;
}
array[++i] = '.';//添加小数点
}
//小数部分处理
i++;
array[i++] = (u8)(DecimalPart * 10)%10 + '0';
array[i++] = (u8)(DecimalPart * 100)%10 + '0';
array[i] = '\0';
}
函数名称: Float2Char
函数功能:浮点数转字符串
参 数:无
返回 值: 无
********************************************/
void Float2Char(float value, unsigned char *array)
{
u16 IntegerPart; //整数部分
float DecimalPart;//小数部分
u8 i = 0;
u8 j = 0;
u16 temp;
u8 bit = 0;
//判断正负数
if(value < 0)
{
value =0.0-value;
array[0] = '-';
bit = 1; //标记负数
i++;
}
//分离整数和小数
if(value >= 1)//大于1的浮点数
{
IntegerPart = (u16)value; //传入的值强制转换为整数
}
else
{
IntegerPart = 0;//小于1的浮点数
}
DecimalPart = value - IntegerPart;//获取小数部分
//处理整数部分
if(IntegerPart == 0) //小于1的浮点数
{
if(bit)//如果是负数
{
array[1] = '0';
array[2] = '.';
i = 2;
}
else
{
array[0] = '0';
array[1] = '.';
i = 1;
}
}
else //大于1的浮点数
{
while(IntegerPart > 0)
{
array[i++] = IntegerPart % 10 + '0'; //
IntegerPart /= 10;
}
i--;//退出来记录前一个位置
//修正数据位置
if(bit)//为负数的时候
{
if(i%2==0) //位数为偶数
{
for(j=1; j<=i/2; j++) //最中间的数字位置不变
{
temp = array[j];
array[j] = array[i+1 - j];
array[i+1 - j] = temp;
}
}
else//位数为奇数
for(j=1; j<=(i-1)/2; j++)
{
temp = array[j];
array[j] = array[i+1 - j];
array[i+1 - j] = temp;
}
}
else //为整数
if(i%2==0) //位数为奇数
{
for(j=0; j<i/2; j++) //最中间的数字位置不变
{
temp = array[j];
array[j] = array[i - j];
array[i - j] = temp;
}
}
else//位数为偶数
for(j=0; j<(i+1)/2; j++)
{
temp = array[j];
array[j] = array[i - j];
array[i - j] = temp;
}
array[++i] = '.';//添加小数点
}
//小数部分处理
i++;
array[i++] = (u8)(DecimalPart * 10)%10 + '0';
array[i++] = (u8)(DecimalPart * 100)%10 + '0';
array[i] = '\0';
}