Десятичный тип в QT (C++)

Из чего корректный тип должен использовать в спокойной разработке (или C++ в целом) для десятичной системы счисления, т.е. эквивалента System.Decimal структура в .NET?

  • QT обеспечивает встроенную структуру? (Я не могу найти его в документах, но возможно не знаю, где посмотреть.)
  • Существует ли "стандартная" библиотека C++ для использования?
9
задан Dave Mateer 30 March 2010 в 18:34
поделиться

4 ответа

Какой правильный тип использовать при разработке Qt (или C ++ в целом) для десятичных чисел арифметика, то есть эквивалент структуры System.Decimal в .Net?

Ни в стандартной библиотеке C ++, ни в Qt нет типа данных, эквивалентного System.Decimal в. СЕТЬ.

Предоставляет ли Qt встроенную структуру? (Я не могу найти его в документации, но, возможно, не знаю, где искать.)

Нет.

Есть ли "стандартная" библиотека C ++ для использования?

Нет.

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

[EDIT:] Лучшим выбором, чем указанная выше библиотека, может быть qdecimal . Он включает в себя IEEE-совместимое десятичное число с плавающей запятой, которое очень похоже (но не совсем то же самое) на десятичное число .NET, а также использует идиомы и методы Qt.

9
ответ дан 4 December 2019 в 14:27
поделиться
1
ответ дан 4 December 2019 в 14:27
поделиться

Быстрый поиск показывает, что gcc может напрямую поддерживать десятичные дроби, и что гораздо более общая информация доступна, например, на http://speleotrove.com/ десятичный /

1
ответ дан 4 December 2019 в 14:27
поделиться

В 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);

2
ответ дан 4 December 2019 в 14:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: