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

 
 
> Как рациональнее всего преобразовать float в int?
zheka
сообщение Dec 21 2010, 12:33
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Господа, есть небольшая задачка.
Работаю с дисплеем и тачскрином. Как вы сами понимаете, координаты дисплея и координаты тачскрина - это две большие разницы (или, как говорят в Одессе, четыре маленьких)) ).

координаты дислпея вычисляются следующим образом:
х=touch_x*800/256
y=touch_y*480/256

Но полученный результат является float, а функция, куда будут переданы координаты берет int.
Естественно, такой вариант как скажем Circle (touch_x*800/256, touch_y*480/256 .....) не прокатит.

Мне хочется с наименьшими процессорными затратами получить округленные числа типа int, как это сделать? Ибо способов существует несколько, а вот какой быстрее....

Спасибо.

Сообщение отредактировал zheka - Dec 21 2010, 12:34
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zheka
сообщение Dec 22 2010, 03:52
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Не совсем в этом причина.
800/256 - я так написал, чтобы было понятно тем, кому я задаю вопрос.
Я же рассуждая, что каждый раз высчитывть константу затратно в своем коде изначально просто умножал на 3.125, отсюда и возникла работа с float.

Кстати, в полученном коде все-таки каждый раз косвенно высчитывается 800/256 и 400/256. Нельзя ли еще сократить?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 22 2010, 04:03
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (zheka @ Dec 22 2010, 08:52) *
Нельзя ли еще сократить?
Сократить что? Одно умножение и пересылку (сдвиг на 8 это пересылка байта 2 раза, ибо результат у вас двухбайтный)? Маловероятно. Разве что таблицей. У вас есть лишний килобайт флеша?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zheka   Как рациональнее всего преобразовать float в int?   Dec 21 2010, 12:33
- - _Pasha   QUOTE (zheka @ Dec 21 2010, 19:33) Но пол...   Dec 21 2010, 12:40
- - fantex   Если touch_x и touch_y типа int, то и результат бу...   Dec 21 2010, 12:44
- - rezident   Зачем вам float вообще? Вычисляйте в целых числах....   Dec 21 2010, 12:45
- - zheka   rezident, сейчас переварю, то что Вы написали, а п...   Dec 21 2010, 13:04
- - sergeeff   Вы, надеюсь, понимаете, что координаты вашего устр...   Dec 21 2010, 13:11
- - zheka   ЦитатаВы, надеюсь, понимаете, что координаты вашег...   Dec 21 2010, 13:29
|- - sergeeff   Цитата(zheka @ Dec 21 2010, 20:29) Подозр...   Dec 21 2010, 14:00
- - rezident   zheka, а вы дроби из курса начальной школы не забы...   Dec 21 2010, 13:42
- - zheka   Да нет же, я не о целых и дробях, я о том, что to...   Dec 21 2010, 13:49
|- - rezident   Цитата(zheka @ Dec 21 2010, 21:48) ОДнако...   Dec 21 2010, 13:50
- - zheka   У меня CodeVision 2, процессор - atmega32 Сейчас п...   Dec 21 2010, 15:53
|- - 777777   Цитата(zheka @ Dec 21 2010, 21:53) То что...   Dec 21 2010, 16:13
|- - sergeeff   Цитата(zheka @ Dec 21 2010, 22:53) У меня...   Dec 21 2010, 16:23
- - zheka   КодsX=(int)((((long int...   Dec 21 2010, 16:28
|- - ReAl   Цитата(zheka @ Dec 21 2010, 21:28) КодsX=...   Dec 22 2010, 04:15
- - sergeeff   Надеюсь вы поняли, что проблема была в ваших Код...   Dec 21 2010, 16:34
- - ukpyr   ЦитатаКстати, в полученном коде все-таки каждый ра...   Dec 22 2010, 04:18
|- - defunct   Цитата(ukpyr @ Dec 22 2010, 09:18) вместо...   Dec 29 2010, 20:57
|- - Serj78   Я думаю Жеке не надо напоминать, что наш любимый C...   Dec 31 2010, 16:09
- - zheka   ukpyr спасибо.   Dec 22 2010, 04:27
- - ~phase   вообще то на сколько я замечал то сдвиг для умноже...   Dec 27 2010, 07:37
- - mempfis_   Цитата(~phase @ Dec 27 2010, 14:37) вообщ...   Dec 27 2010, 07:48


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:11
Рейтинг@Mail.ru


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