Algorytm konwersji liczby zmiennoprzecinkowej na tekst
Szukam algorytmu pozwalającego skutecznie zamieniać liczbę zmiennoprzecinkową typu double na tekst. Liczba w standardzie IEEE 754, gdzie jest:
- 52 bity mantysy
- 11 bitów wykładnika
- 1 bit znaku
Znalazłem algorytm konwersji typu float (23/8/1), z zastosowaniem dwóch int'ów, ale ma ograniczenie górne na wykładnik <31 i dolne >-23. Potrzebuję sprytnego sposobu obejścia ograniczeń. Jeden, który wymyśliłem wymaga implementacji wielkich liczb całkowitych i to jest pewna bariera, gdyż w C taki kod jest średnio przejrzysty.
Próbowałem przeanalizować kod snprintf() z bibliotek GNU, ale poległem - ogrom tam #define i #ifdef.
Pytanie jest poważne. UWAGA! nie interesują mnie odpowiedzi w stylu "użyj sprintf("%f", d); - wszelkie takie odpowiedzi będę oznaczał jako obraźliwe i dawał ujemne punkty. Platforma na której muszę tego użyć ma skopany sprintf() i nie ma snprintf() - brak tego drugiego rodzi wycieki kończące się wysypaniem. UWAGA 2! nie interesują mnie rozwiązania w C++, czy Pythonie - szukam algorytmu.