#include<stdio.h>
#define BIT_LENGTH 4
int DAF_Comm_Float2Char(float value, char *array)
{
int IntPart;
float DecPart;
int i = 0;
int j = 0;
char temp;
//分离整数和小数
if (value >= 1)
{
IntPart = (int)value;
DecPart = value - IntPart;
}
else
{
IntPart = 0;
DecPart = value - IntPart;
}
/*convert the IntPart*/
if (IntPart == 0)
{
array[0] = '0';
array[1] = '.';
i = 1;
}
else
{
while (IntPart > 0)
{
array[i] = IntPart % 10 + '0';
IntPart /= 10;
i++;
}
i--;
//fix the result
for (j = 0; j<i; j++)
{
temp = array[j];
array[j] = array[i - j];
array[i - j] = temp;
}
i++;
array[i] = '.';
}
/*convert the DecPart*/
i++;
array[i++] = (int)(DecPart * 10) % 10 + '0';
array[i++] = (int)(DecPart * 100) % 10 + '0';
array[i++] = (int)(DecPart * 1000) % 10 + '0';
array[i++] = (int)(DecPart * 10000) % 10 + '0';
array[i] = '\0';
return i;
}
int main()
{
float f = 4.51234;
char ch[BIT_LENGTH];
int m=DAF_Comm_Float2Char(f, ch);
printf("%d\n\n\n",m);
for (int i = 0; i < BIT_LENGTH; i++)
{
printf("%c",ch[i]);
}
return 0;
#define BIT_LENGTH 4
int DAF_Comm_Float2Char(float value, char *array)
{
int IntPart;
float DecPart;
int i = 0;
int j = 0;
char temp;
//分离整数和小数
if (value >= 1)
{
IntPart = (int)value;
DecPart = value - IntPart;
}
else
{
IntPart = 0;
DecPart = value - IntPart;
}
/*convert the IntPart*/
if (IntPart == 0)
{
array[0] = '0';
array[1] = '.';
i = 1;
}
else
{
while (IntPart > 0)
{
array[i] = IntPart % 10 + '0';
IntPart /= 10;
i++;
}
i--;
//fix the result
for (j = 0; j<i; j++)
{
temp = array[j];
array[j] = array[i - j];
array[i - j] = temp;
}
i++;
array[i] = '.';
}
/*convert the DecPart*/
i++;
array[i++] = (int)(DecPart * 10) % 10 + '0';
array[i++] = (int)(DecPart * 100) % 10 + '0';
array[i++] = (int)(DecPart * 1000) % 10 + '0';
array[i++] = (int)(DecPart * 10000) % 10 + '0';
array[i] = '\0';
return i;
}
int main()
{
float f = 4.51234;
char ch[BIT_LENGTH];
int m=DAF_Comm_Float2Char(f, ch);
printf("%d\n\n\n",m);
for (int i = 0; i < BIT_LENGTH; i++)
{
printf("%c",ch[i]);
}
return 0;
}
运行结果为:
4.51