Из чего корректный тип должен использовать в спокойной разработке (или C++ в целом) для десятичной системы счисления, т.е. эквивалента System.Decimal
структура в .NET?
Какой правильный тип использовать при разработке Qt (или C ++ в целом) для десятичных чисел арифметика, то есть эквивалент структуры System.Decimal в .Net?
Ни в стандартной библиотеке C ++, ни в Qt нет типа данных, эквивалентного System.Decimal
в. СЕТЬ.
Предоставляет ли Qt встроенную структуру? (Я не могу найти его в документации, но, возможно, не знаю, где искать.)
Нет.
Есть ли "стандартная" библиотека C ++ для использования?
Нет.
Но вы, возможно, захотите взглянуть на Библиотеку арифметических операций с множественной точностью GNU .
[EDIT:] Лучшим выбором, чем указанная выше библиотека, может быть qdecimal . Он включает в себя IEEE-совместимое десятичное число с плавающей запятой, которое очень похоже (но не совсем то же самое) на десятичное число .NET, а также использует идиомы и методы Qt.
Не знаю насчет Qt, но есть библиотека десятичной плавающей точки от Intel.
Быстрый поиск показывает, что gcc может напрямую поддерживать десятичные дроби, и что гораздо более общая информация доступна, например, на http://speleotrove.com/ десятичный /
В C ++ нет десятичного типа, и, насколько мне известно, он также не предоставляется Qt. В зависимости от диапазона значений, достойным решением может быть просто использование unsigned int
и деление / умножение на степень десяти при его отображении.
Например, если мы говорим о долларах, вы можете сделать это:
unsigned int d = 100; // 1 доллар, в основном d содержит здесь центы ...
или, если вы хотите 3 десятичных разряда и хотите сохранить 123.456
unsigned int x = 123456;
и просто вычислить, когда отображение:
printf ("% u.% u \ n", x / 1000, x% 1000);