您的位置:首页 > 其它

浮点数在串口打印函数

2015-12-24 22:33 459 查看
/********************************************************************************************************

网上的浮点数在串口打印的函数都不太完美,于是参考他们的一些算法自己写了一个比较完善的算法

可以完成包括负数和正数的浮点数转字符串的转换

****************************************************************************************************/

#include<stdio.h>

typedef unsignedchar uint8;

typedef unsignedint uint32;

uint8Float2Char(float value,uint8 *array);

void main()

{

uint8A[10];

floatvalue= -123.456789;

uint8i;

Float2Char(value,A);

printf("%s",A);

}

uint8Float2Char(float value,uint8 *array)

{

floatDecimalPart;

uint32IntegerPart;

uint8i = 0, j = 0, temp;

//分离整数和小数

if(value< 0)

{

value = -value ;

array[i++] = '-';

}

else

array[i++] = '+';

IntegerPart = (uint32)value;

DecimalPart = value - IntegerPart;

//处理整数

if(0== IntegerPart)//整数部分为0

array[i++] = '0';

else

{

while(0 != IntegerPart)

{

array[i++ ] = IntegerPart%10 + '0';

IntegerPart/=10;

}

i --;

for(j = 1; j < (i+1)/2; j++)

{

temp = array[j];

array[j] = array[i -j+1];

array[i-j+1] = temp;

}

i++;

}

array[i++] = '.';

//处理小数

array[i++] = (uint32)(DecimalPart * 10)%10 + '0';

array[i++] = (uint32)(DecimalPart * 100)%10 + '0';

array[i++]= (uint32)(DecimalPart * 1000)%10 + '0';

array[i++] = (uint32)(DecimalPart * 10000)%10 + '0';

array[i] = '\0';

returni;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: