Я пишу приложение, которое много манипулирует с помощью десятичных цифр (например, 57.65). Поскольку умножения и деления быстро ухудшают их точность, я хотел бы сохранить числа в классе, который сохраняет свою точность после манипуляций, а не полагаться на float и double.Есть ли класс библиотеки для представления чисел с плавающей запятой?
Я говорю о чем-то вроде этого:
class FloatingPointNumber {
private:
long m_mantissa;
int m_dps; // decimal points
// so for example 57.65 would be represented as m_mantissa=5765, m_dps=2
public:
// Overloaded function for addition
FloatingPointNumber operator+(FloatingPointNumber n);
// Other operator overloads follow
}
Хотя это возможно для меня, чтобы написать такой класс, он чувствует себя немного как изобретать колесо, и я уверен, что там должен быть какой-то библиотеки классов где-то это делает (хотя это, похоже, не существует в STL).
Кто-нибудь знает о такой библиотеке? Большое спасибо.
Да, тип данных, который вы ищете, называется десятичным. Однако это не тип с плавающей точкой. Например, тип данных используется при представлении денег. – Skurmedel
C++ не имеет десятичного числа. – GManNickG
Нет, я никогда не говорил об этом. – Skurmedel