Well its not extremely accurate but its close enough. I tried all the standard methods of base conversions but the only one that didn't have the trouble of converting floats to ints was the subtraction method.
Code:
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14159265358989323846
float getbase(float);
int main(void)
{
float base;
char out[50];
float num = 4;
int count=0, val=0, dec=0;
printf("%f in base 10 is equivlent to approximatly:\n", num);
base=getbase(num);
while ( count < 49 && num > 0.0 )
{
if ( base < 1.0 && dec == 0)
{
dec = 1;
out[count]='.';
count++;
}
val = 0;
while ( num >= base )
{
num -= base;
val ++;
}
out[count] = '0' + val;
base /= PI;
count++;
}
out[count]='\0';
printf("%s in base PI\n", out);
return 0;
}
float getbase(float limit)
{
float num=PI;
while ( num < limit )
num *= PI;
return num;
}