Хранение больших значений в маленьких типах данных
- C++
constexprконструктор - Много типов с разным диапазоном и точностью на выбор
Совместима со всеми Arduino платформами (используются Arduino-функции)
Глобально есть два типа: ExpUint8 и ExpUint16, первый хранит в 8 битах, второй в 16. Правая цифра в имени типа отвечает за количество бит экспоненты, чем выше - тем больше максимум, но ниже точность, а также меньше минимальное значение.
| type | min | max | err% |
|---|---|---|---|
ExpUint85 | 9 | > uint32 | 12 |
ExpUint84 | 17 | 1'015'808 | 6 |
ExpUint83 | 33 | 8'064 | 3 |
ExpUint82 | 65 | 1'016 | 1 |
ExpUint169 | 129 | > uint32 | < 1 |
ExpUint168 | 257 | > uint32 | < 1 |
ExpUint167 | 513 | > uint32 | < 1 |
ExpUint166 | 1025 | > uint32 | < 0.1 |
ExpUint165 | 2049 | > uint32 | < 0.1 |
ExpUint164 | 4097 | 268'402'688 | < 0.1 |
ExpUint163 | 8193 | 2'097'024 | < 0.1 |
Версия для знаковых чисел:
| type | min | max |
|---|---|---|
ExpInt85 | < int32 | > int32 |
ExpInt84 | -491520 | 491520 |
ExpInt83 | -3968 | 3968 |
ExpInt82 | -504 | 504 |
ExpInt169 | < int32 | > int32 |
ExpInt168 | < int32 | > int32 |
ExpInt167 | < int32 | > int32 |
ExpInt166 | < int32 | > int32 |
ExpInt165 | < int32 | > int32 |
ExpInt164 | -134'184'960 | 134'184'960 |
ExpInt163 | -1'048'448 | 1'048'448 |
Пользоваться можно как обычными числами:
ExpUint84 x = 123456; // запаковкаsizeof(x); // == 1uint32_t r = x; // распаковка == 122880uint32_t(x); // так тоже можно- v1.0
- Библиотеку можно найти по названию ExpInt и установить через менеджер библиотек в:
- Arduino IDE
- Arduino IDE v2
- PlatformIO
- Скачать библиотеку .zip архивом для ручной установки:
- Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
- Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
- Распаковать и положить в Документы/Arduino/libraries/
- (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
- Читай более подробную инструкцию по установке библиотек здесь
- Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
- Через менеджер библиотек IDE: найти библиотеку как при установке и нажать "Обновить"
- Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!
При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request'ов!
При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:
- Версия библиотеки
- Какой используется МК
- Версия SDK (для ESP)
- Версия Arduino IDE
- Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
- Какой код загружался, какая работа от него ожидалась и как он работает в реальности
- В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код