workarounds never suck but prove that you're a programmer...
float f = 3.14159;
char* buf = (char*)&f;
var i;
for (i = 0; i < sizeof(float); i ++) {
file_asc_write(file, (var)(buf[i]));
}
reading works accordingly. i haven't tested it, so if it doesn't work try left-shifting the var by 10:
file_asc_write(file, (var)(buf[i]) << 10);