Как преобразовать вещественное число в строку?

long double tt = 1e+50;
    printf("%Lf\n",tt);

100000000000000007629769841091887003294964970946560,000000

Соответственно я ищу способ как сделать это самому без printf.
Я покуда нашел способ на основании преобразования к нормированной форме вот
ссылка. Но в этом способе получается на приведение к нормированной форме нужно много деления, что не есть хорошо.

Так же как понимаю можно на основании длиннай арифметики, если 1e+50 представить в памяти как:
1000000000000000000000000000000000000000000000000000000000000000.....

Но как по мне этот способ еще хуже чем первый.
Может кто знает как лучше вещественное число преобразовать в строку?
  • Вопрос задан
  • 600 просмотров
Решения вопроса 1
@zedxxx
Есть хорошие и быстрые алгоритмы, но они сложные и тянут на научную работу:

- Printing Floating-Point Numbers Quickly and Accurately
- Ryu: Fast Float-to-String Conversion

Реализация последнего (вроде самый быстрый) на Си: https://github.com/ulfjack/ryu
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы