2009-11-09 73 views
1

我正在研究财务应用程序中的某些功能。所有数字在代码和数据库中均以小数表示,不会出现舍入误差。但是,我遇到了一些性能问题,我正在考虑在自己的计算中切换到浮点数(浮点数/双精度数)。这是基于四舍五入错误不是问题(我将不得不与客户核对)的假设。将表示从小数转换为浮点数 - 陷阱

但是,如果我进行此转换,我想知道有哪些Pitfals。是否有一种表达式在使用浮点数进行计算时可能与使用小数计算的同一表达式有显着不同?

回答

1

一个财务申请通常是不是使用浮点数的第一个例子。所以要小心。

无论如何,this article已经超过了你想知道的浮点数。它主要是关于D编程语言,但它有很多通用的知识。

+0

我知道使用浮点是有点非正统,但是,我的模块中完成的一些计算已经完成使用浮点,因为它们是不可行的使用十进制计算。最后,客户(由数学家代表)将不得不决定。 – 2009-11-09 18:44:19

3

使用浮动的问题是,你会最终(可能)意外的精度问题。

如果您使用float,那么您可以正确表示的最大值将是$ 167,772.16。如果你使用双倍,那么最大值将会更好(大约180万亿美元)。

您是否考虑过使用直线整数或长整数(32位或64位),代表0.01美元的间隔?这样你可以更好地控制值,但性能应该很好。您也可以将它们包装在一个结构中,以便与标准的数学运算符一起使用。