реклама на сайте
подробности

 
 
> fload в char
Karl
сообщение Jun 25 2007, 09:53
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



Народ, подскажите, как в ИАР преобразовать float (double) в строку с целью вывода на экран?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
shasik
сообщение Jun 26 2007, 09:49
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188



Цитата(Karl @ Jun 25 2007, 12:53) *
Народ, подскажите, как в ИАР преобразовать float (double) в строку с целью вывода на экран?


А на какой экран, если не секрет? Если на "экран" симулятора, то черт с ним. А если преобразовываете double в char для работ с ЖКИ, то использовать printf нельзя - ооооочень медленно будет.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 26 2007, 15:37
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(shasik @ Jun 26 2007, 12:49) *
А на какой экран, если не секрет? Если на "экран" симулятора, то черт с ним. А если преобразовываете double в char для работ с ЖКИ, то использовать printf нельзя - ооооочень медленно будет.

Да? А медленно - это сколько?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
shasik
сообщение Jun 27 2007, 05:49
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188



Цитата(Dog Pawlowa @ Jun 26 2007, 18:37) *
Да? А медленно - это сколько?


Встречный вопрос: а как подсчитать количество тактов, потраченных на выполнение того или иного куска кода? Судя по Вашим постам в этом форуме, ответ Вы знаете. Зачем тогда спрашиваете, издеваетесь, да?

Код:
Код
sprintf(txt, "%.4f", 12.35);


занимает в IAR симуляторе примерно 19000 тиков CYCLECOUNTER'а. Много это или мало Вам судить.
По мне проще сделать простое преобразование типов (int), а затем (char *)& или Bin2BCD. Если нужна и дробная часть, то сначала умножить на 10.0, 100.0, 1000.0 и т.д. Все равно быстрее. Да и не забудьте добавить 0.5, чтобы получить правильное округление.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 27 2007, 09:30
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(shasik @ Jun 27 2007, 08:49) *
По мне проще сделать простое преобразование типов (int), а затем (char *)& или Bin2BCD. Если нужна и дробная часть, то сначала умножить на 10.0, 100.0, 1000.0 и т.д. Все равно быстрее. Да и не забудьте добавить 0.5, чтобы получить правильное округление.

То о чем Вы пытаетесь вести речь не есть работа c float double. Это призыв не пользоваться float, но далеко не все могут ему последовать. Попробуйте написать свою функцию для печати 64bit float smile.gif и расскажите сколько сэкономили. Заодно можете попробовать сколько времени на 8-бит контроллерах операции с 64 битной плавучкой занимают, но есть такое слово "надо" smile.gif
Естественно, printf() обладает избыточностью и "сделать" его на печати какого-нибудь int тупо задав выходной формат и написав жесткую обработку легко. Но для float относительный выигрыш будет меньше.
По поводу "18ms" и "отсутствие контроля" - про прерывания Вам уже сказали, а вообще в нормально созданной системе процесс отображения самый не приоритетный и очередь сообщений к процессу отображения строится с намеряными потерями, что позволяет не отображать тупо информацию чаще, чем оператор ее может считывать.
Цитата(shasik @ Jun 27 2007, 12:16) *
А напрягать свой "мозг" не станем.

Напрягать мозг станем! Обязательно! Только в правильном направлении а не в рамках полировки отдельных абсолютно не критичных кусочков кода.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Karl   fload в char   Jun 25 2007, 09:53
- - Dog Pawlowa   Цитата(Karl @ Jun 25 2007, 12:53) Народ, ...   Jun 25 2007, 10:12
- - KRS   Цитата(Karl @ Jun 25 2007, 13:53) Народ, ...   Jun 25 2007, 10:14
|- - Karl   Попробовал sprintf - вылезла ошибка Fatal Error[e7...   Jun 25 2007, 10:59
|- - zltigo   Цитата(Karl @ Jun 25 2007, 13:59) Попробо...   Jun 25 2007, 11:01
- - IgorKossak   Для работы sprintf HEAP не нужен. Видимо автор пыт...   Jun 25 2007, 14:00
|- - Karl   Цитата(IgorKossak @ Jun 25 2007, 20:00) Д...   Jun 26 2007, 03:29
- - Dog Pawlowa   Цитата(shasik @ Jun 27 2007, 08:49) Встре...   Jun 27 2007, 06:36
|- - shasik   Цитата(Dog Pawlowa @ Jun 27 2007, 09:36) ...   Jun 27 2007, 07:58
|- - Dog Pawlowa   Цитата(shasik @ Jun 27 2007, 10:58) А отс...   Jun 27 2007, 08:36
|- - shasik   Цитата(Dog Pawlowa @ Jun 27 2007, 11:36) ...   Jun 27 2007, 09:16
|- - Dog Pawlowa   Цитата(shasik @ Jun 27 2007, 12:16) Смешн...   Jun 27 2007, 09:35
- - shasik   Цитата(zltigo @ Jun 27 2007, 12:30) То о ...   Jun 27 2007, 10:48
- - Dog Pawlowa   Цитата(shasik @ Jun 27 2007, 13:48) 1. А ...   Jun 27 2007, 11:19
- - Karl   Уф, ну и дискуссию вы тут развернули! Похоже, ...   Jun 28 2007, 11:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016