【发布时间】:2009-08-12 18:59:57
【问题描述】:
我正在编写一个应用程序,它使用 十进制 数字(例如 57.65)进行大量操作。由于乘法和除法会迅速侵蚀它们的准确性,我想将数字存储在一个类中,在操作后保持其准确性,而不是依赖浮点数和双精度数。
我说的是这样的:
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 中似乎不存在)。
有人知道这样的图书馆吗?非常感谢。
【问题讨论】:
-
是的,您要查找的数据类型称为十进制。但是,它不是浮点类型。例如,它是表示货币时使用的数据类型。
-
...?他问是否存在这样的图书馆。你说,'是的,......'
-
那么我以一种模糊的方式表达了自己。我想说的是,这种类型通常被称为“十进制”,这会给他指明要查找的内容。
-
如果你想代表金钱,只需将其存储为小货币单位,然后再进行转换,例如,如果你想将其代表给人类。
-
我知道数据类型 decimal 存在于 C# 中,但不存在于 C++ 中,因此是原始问题。
标签: c++ floating-point decimal