Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Вывод float в две строки. (си)  (Прочитано 1078 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Eliriand

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Вывод float в две строки. (си)
« : 16 Февраля 2010, 19:31:25 »
Добрый вечер.
Вопрос такой. Желаю выводить число с плавающей точкой в виде (мантисса)*2^(экспонента), при этом (экспонента) должна находиться на строку выше остального.
Кто посоветует, как реализовать это?

______________________________________

И да, если это как-то облегчает задачу, то знак, мантисса и экспонента у меня хранятся в различных переменных.
« Последнее редактирование: 16 Февраля 2010, 19:37:44 от Eliriand »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Вывод float в две строки. (си)
« Ответ #1 : 17 Февраля 2010, 12:32:41 »
Это что, шутка?
Обычная функция printf не подойдет?  :)

printf("%d\n%d * 2\n",expo,mantissa);
« Последнее редактирование: 17 Февраля 2010, 12:35:35 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Eliriand

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Вывод float в две строки. (си)
« Ответ #2 : 17 Февраля 2010, 18:17:46 »
Вы меня не поняли.
имеется ввиду вывод вида
            32
1.43*2

Экспонента должна располагаться именно справа сверху.
То, что вы предлагаете, просто выводит мантиссу и экспоненту в две строчки, одну под другой.

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Вывод float в две строки. (си)
« Ответ #3 : 17 Февраля 2010, 18:44:50 »
А.
Тогда мантиссу и "*2" сначала запихнуть в строку с помощью sprintf, посчитать ее длину и перед экспонентой нарисовать нужное количество пробелов.
Функция printf понимает условное форматирование - интерпретирует свои аргументы в зависимости от того, какие были перед этим, подробности в man 3 printf
Поэтому можно обойтись вообще двумя вызовами, сначала sprintf, потом printf.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Eliriand

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Вывод float в две строки. (си)
« Ответ #4 : 17 Февраля 2010, 18:50:43 »
Большое спасибо! :D
*побежал набивать*

 

Страница сгенерирована за 0.057 секунд. Запросов: 25.