make floating point I/O work, but not use setlocale(LC_NUMERIC, C)