C ++ десятичные типы данных

Есть ли способ использовать десятичные типы данных, такие как decimal32 , decimal64 или decimal128 в моих программах на C ++?

    Классы из Decimal TR не реализованы для всех компиляторов. Некоторые компиляторы, например, gcc , реализуют C-Decimal TR и предоставляют соответствующие расширения в C ++. Раньше существовала реализация с открытым исходным кодом для C ++ Decimal TR, но я не смог ее найти. Если ваш компилятор не поддерживает десятичные типы, лучшим вариантом является создание обертки для библиотеки decNumber IBM.

    Чтобы улучшить ситуацию в будущем на C ++, я создал план по обновлению TR, и я собираюсь превратить текущий TR в готовое предложение, готовое к следующей сессии комитета C ++ (в апреле в Бристоле), пытаясь получить он был принят в стандарт C ++, возможно, в пересмотре, запланированном на 2014 год. Реализация, которую я имею, является частью моей обычной работы, и мне не решить, можно ли ее публиковать, хотя есть надежда, что она могут быть открыты в какой-то момент.

    Вы можете использовать простое в использовании решение только для заголовков для C ++ с шаблонами: https://github.com/vpiotr/decimal_for_cpp

    Обратите внимание, что это не class * Big * Decimal; он ограничен цифрами «мантиссы» размером в 64 бита.

    [взято из ссылки]

      #include "decimal.h" using namespace dec; // the following declares currency variable with 2 decimal points // initialized with integer value (can be also floating-point) decimal<2> value(143125); // to use non-decimal constants you need to convert them to decimal value = value / decimal_cast<2>(333.0); // output values cout << "Result is: " << value << endl; // this should display something like "429.80" // to mix decimals with different precision use decimal_cast decimal<6> exchangeRate(12.1234); value = decimal_cast<2>(decimal_cast<6>(value) * exchangeRate); cout << "Result 2 is: " << value << endl; // this should display something like "5210.64" cout << "Result 2<6> is: " << decimal_cast<6>(value) << endl; // this should display something like "5210.640000" 

    используйте int32 или int64 и (вручную) сдвиньте десятичную точку туда, где вы хотите. Если вы измеряете доллары, например, просто измеряйте центы и отображаете значение по-разному. просто!

    Interesting Posts

    Как закрыть приложение OS X из командной строки с помощью псевдонима, определенного в моем .bash_profile?

    Как открыть файлы EPS под Windows 7?

    OEM Office 2010 без носителя – как переустановить?

    Загрузка файлов в Ubuntu делает их «разделяемыми» в Vista

    Как получить случайную строку текстового файла в Java?

    Имеет ли время исполнения Android ART те же ограничения, что и Dalvik?

    Как запретить Chrome Canary обновлять -OR- Как мне синхронизировать два профиля Chrome с одной учетной записью?

    Как найти одно изображение внутри другого?

    Контакты не отображаются в контактной книге, но они отображаются в поле «Кому». Зачем?

    Использование компонента Sessionful Session для отслеживания сеанса пользователя

    Таймер обратного отсчета jQuery

    Преобразование строки, совместимой с ISO 8601, в java.util.Date

    Перегрузка функций по типу возврата?

    Cygwin Mintty unicode не отображается неудачно, несмотря на то, что dejavu sans mono и все

    Fsck ntfs диск в Linux

    Давайте будем гением компьютера.