2014년 3월 5일 수요일

Float To String (ftoa, by C)

/*
 * float f : 문자열로 변환할 실수값
 * int length : 문자열로 변환할 소수점 자릿수, 0이면 정수로 변환
 * char *buffer : 변환값을 저장할 문자열포인터
 */

void FloatToString(float f, int length, char* buffer)
{
int i = 0;
int num = 0;
int pos = 0;
int dec = 0;

if(f < 0)
{
buffer[pos++] = '-';
f *= -1;
}

dec = f;

while(dec > 0)
{
num++;
dec /= 10;
}

dec = f;
f = (f-dec) * 10;

if(num == 0)
{
buffer[pos++] = '0';
}
else
{
for(i = num; i > 0; i--)
{
buffer[i-1 + pos] = dec % 10 + '0';
dec /= 10;
}

pos += num;
}

if(f == 0.0f)
return;
else
{
if(length > 0)
buffer[pos++] = '.';

for(i = 0; i < length; i++)
{
int value = f;
buffer[pos++] = value + '0';
f = (f-value) * 10;
if(f == 0.0f)
break;
}
}
}