Десятичный тип в Qt (C ++) - PullRequest
9 голосов
/ 30 марта 2010

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

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

Ответы [ 5 ]

9 голосов
/ 30 марта 2010

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

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

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

номер

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

Нет.

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

[РЕДАКТИРОВАТЬ:] лучшим выбором, чем указанная выше библиотека, может быть qdecimal . Он включает в себя IEEE-совместимое десятичное число с плавающей запятой, которое очень похоже (но не совсем то же самое) на десятичное .NET, а также использует идиомы и практики Qt.

2 голосов
/ 30 марта 2010

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

1 голос
/ 03 сентября 2010

Существует также реализация в C, доступная от IBM: http://www.alphaworks.ibm.com/tech/decNumber

1 голос
/ 31 марта 2010

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

1 голос
/ 30 марта 2010
...