将表示从十进制转换为浮点数 - 陷阱

时间:2009-11-09 18:26:11

标签: floating-point decimal

我正在处理财务应用程序中的某些功能。所有数字都表示为小数,而不会在代码和数据库中出现舍入错误。但是,我遇到了一些性能问题,我正在考虑在自己的计算中切换到浮点数(float / double)。这是基于舍入误差不是问题的假设(我将不得不与客户核实)。

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

2 个答案:

答案 0 :(得分:3)

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

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

您是否考虑使用代表$ 0.01间隔的直线型或长型(32位或64位)?这样你可以更好地控制价值,但表现应该是好的。您还可以将它们包装在结构中,以便更容易使用标准数学运算符。

答案 1 :(得分:1)

财务应用程序通常是使用浮点时的第一个示例。所以要小心。

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