Десятичный тип в Qt (C++)
какой правильный тип использовать в разработке Qt (или C++ в целом) для десятичной арифметики, т. е. эквивалент System.Decimal
struct в .Нет?
- предоставляет ли Qt встроенную структуру? (Я не могу найти его в документах, но, возможно, не знаю, где искать.)
- есть ли "стандартная" библиотека C++ для использования?
5 ответов
какой правильный тип использовать в Qt разработка (или C++ в целом) для десятичная арифметика, т. е. эквивалент системы.Десятичные struct в .Нет?
ни стандартная библиотека C++, ни Qt не имеют типа данных, эквивалентного System.Decimal
in .Сеть.
предоставляет ли Qt встроенную структуру? (Я не могу найти его в документах, но может быть не знаю, где искать.)
нет.
есть "стандартная" библиотека C++ для использовать?
нет.
но вы, возможно, захотите взглянуть на GNU Multiple Precision Arithmetic Library.
[EDIT:] лучшим выбором, чем вышеуказанная библиотека, может быть qdecimal. Он обертывает десятичный float, совместимый с IEEE, который очень похож (но не совсем такой же, как) на .NET decimal, а также использует идиомы и практики Qt.
в C++ нет десятичного типа, и, насколько мне известно, Qt также не предоставляет его. В зависимости от вашего диапазона значений, достойным решением может быть просто использовать unsigned int
и разделить / умножить на десять при отображении.
например, если мы говорим о долларах, вы могли бы сделать это:
unsigned int d = 100; // 1 dollar, basically d holds cents here...
или если вы хотите 3 десятичных знака и хотите сохранить 123.456
unsigned int x = 123456;
и просто сделать некоторые просто математику, когда отображение:
printf("%u.%u\n", x / 1000, x % 1000);
понятия не имею о Qt, но есть десятичная библиотека с плавающей запятой от Intel.
быстрый поиск показывает, что gcc может поддерживать десятичные дроби directlyand, что гораздо более общая информация доступна, например,http://speleotrove.com/decimal/
существует также реализация на C, доступная из IBM:http://www.alphaworks.ibm.com/tech/decNumber