Тип Currency в QT

Подключили стороннюю библиотеку к проекту QT 5.1 в виде DLL (windows). Одна из функций сторонней библиотеки принимает значение в так называемом формате Currency

Это число с фиксированной точкой, т.е., десятичная точка всегда находится в одном и том же месте - справа от точки всегда имеются четыре цифры. Этот тип данных используется при денежных вычислениях, когда требуется высокая точность.

Currency хранит числа в диапазоне от -922337203685477,5808 до 922337203685477,5807.

Сам тип параметра QVariant, который нужно записать, представляется в QT как qlonglong (если вывести его TypeName для QVariant, то есть знаковый целый 64 бита). Запись простого qlonglong = dobule * 10000 не дает нужного результата, оно воспринимается библиотекой как целое и домножается на 10000 еще раз

Готового типа [Q]Currency или какой-то вариации real/float/double нужного типа я не нашел

В примерах сторонней библиотеки есть код на Borland C++ Builder 6.0, там пишется наше поле, но для него используется готовая функция Currency StrToCurr(string), которая преобразует строковое представление числа в тип Currency, который там есть

Кодирование битов в 64-битном числе Currency я пока не нашел, объявления типа в C++ Builder тоже не нашел, думал сам сделать битовое преобразование каким-то образом, но нет описания, где какой бит что значит

В итоге вопрос - как завести тип Currency в QT (хоть стандартно typedef, хоть как union с qlonglong+bitset, или еще как-то), чтобы оно заработало

Также буду благодарен за любую информацию на тему формата Currency, которая поможет разобраться


Ответы (0 шт):