#include <stdio.h>
int _pow(int base, int exponent) {
int power = 1;
for (int i = 1; i <= exponent; ++i) {
power = power * base;
}
return power;
}
int _strlen(char *s) {
int i = 0;
while (s[i++] != '\0');
return i - 1;
}
void _reverse(char *s) {
int i = 0, end = _strlen(s) - 1, temp;
while (i < end) {
temp = s[i];
s[i] = s[end];
s[end] = temp;
i++; end--;
}
}
int _inttostr(int n, char s[]) {
int i = 0;
while (n) {
s[i++] = (n % 10) + '0';
n = n / 10;
}
_reverse(s);
s[i] = '\0';
return i;
}
void _floadtostr(float f, char *s, int after_point) {
int int_part = (int)f;
float float_part = f - (float)int_part;
int i = _inttostr(int_part, s);
if (after_point != 0) {
s[i] = '.';
float_part = float_part * _pow(10, after_point);
_inttostr((int)float_part, s + i + 1);
}
}
int main()
{
char s[16] = "";
float f = 123.4567;
_floadtostr(f, s, 4);
printf("%s\n", s);
return 0;
}
/*
run:
123.4567
*/