Форум программистов, компьютерный форум CyberForum.ru

Тип данных с фиксированной точкой - C++

Восстановить пароль Регистрация
 
JerryI
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 31
22.11.2013, 17:16     Тип данных с фиксированной точкой #1
Добрый день.
Возможно вопрос некорректный, но все же...
Типа данных float хорошо подходит для работы с нецелыми числами, но процессор обрабатывает их гораздо медленней, чем целочисленные типы.
Мне неплохо подошел бы тип с одним/двумя знаком после запятой. Имеется много участков, которые инкрементируют переменные, а нужно, чтобы некоторые участки(функции) делали инкремент через-раз (+=.5), городить кучу доп.переменных не хочется, а в программе важен каждый такт, поэтому приходится прибегать к низкоуровневым оптимизациям.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
22.11.2013, 17:25     Тип данных с фиксированной точкой #2
Тогда почему бы не пользоваться целыми числами, умноженными на нужный коэффициент? Если нужна точность до 1/2, достаточно умножать на 2. Число 3 будет соответствовать 1.5 и так далее.
JerryI
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 31
22.11.2013, 17:27  [ТС]     Тип данных с фиксированной точкой #3
Цитата Сообщение от Nick Alte Посмотреть сообщение
Тогда почему бы не пользоваться целыми числами, умноженными на нужный коэффициент? Если нужна точность до 1/2, достаточно умножать на 2. Число 3 будет соответствовать 1.5 и так далее.
А можно ли по шаблону сделать работу с переменной. Я имею ввиду - не писать в каждом месте коэффициент.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
22.11.2013, 17:57     Тип данных с фиксированной точкой #4
Можно, например, написать класс и перегрузить в нём арифметические операции, для полного комплекта сделать операции преобразования из/в int, автоматически применяющие тот же коэффициент.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
22.11.2013, 18:06     Тип данных с фиксированной точкой #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
Если нужна точность до 1/2, достаточно умножать на 2.
Проще для n знаков после точки умножать число на 10^n, и держать в уме что последние n разрядов - дробь.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
22.11.2013, 18:17     Тип данных с фиксированной точкой #6
Цитата Сообщение от kazak Посмотреть сообщение
Проще для n знаков после точки умножать число на 10^n, и держать в уме что последние n разрядов - дробь.
В каких-то ситуациях проще, да. Но класс с преобразованиями надёжнее, да и точнее: зачем терять 3 с копейками бита там, где достаточно "откусить" один?
Yandex
Объявления
22.11.2013, 18:17     Тип данных с фиксированной точкой
Ответ Создать тему
Опции темы

Текущее время: 03:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru