何时在数据库中使用FLOAT

时间:2014-06-27 14:45:59

标签: database floating-point decimal

我一直在阅读浮点数的主题以及由于它们的二进制特性它们如何导致计算不准确,因此它们永远不应该用于首选DECIMAL数据类型的财务应用程序。

是否有可能最好使用小数点浮点数?

3 个答案:

答案 0 :(得分:5)

小数计算也会产生不准确性。重要的是是否存在指定的舍入规则,例如在财务应用程序中,以及涉及的操作是什么。基本上,这完全取决于具体情况。

如果上下文要遵循二进制的IEEE 754规则,那么最好使用(二进制)浮点数。

答案 1 :(得分:2)

您可能已经阅读过,对于财务用途,许多数据库都支持特殊类型,例如 money smallmoney ,以提供更好的数据保留。 Source

然而,通过一些挖掘,我发现了一个非常明确的answer to your question。基本上,它取决于数据的实现和需求。如果您要存储的数据(尤其是指数级)远离浮动类型数据

这完全取决于您需要在数据中保持的准确性。将1.1转换为浮点数然后再将其转换回来,结果将类似于1.0999999999989。

正如我的教授总是说的,并且正如另一位用户指出here,这是何时使用浮动类型的基本经验法则:

  

对于更接近自然的人工制造的价值观   无论如何,精确测量,浮动/双倍更合适。对于   例如,科学数据通常以这种形式表示。   在这里,原始值不会是"十进制精确"首先,   所以维持这个预期结果并不重要   "十进制精度"。浮点二进制点类型要快得多   使用小数位数。

答案 2 :(得分:2)

如果您有股票期权数据,价格可以存储为十进制,但是有一些派生数量,例如隐含波动率,它们通过反转公式计算得出,并且不能精确地知道固定的小数位数。将它们存储为浮动是有意义的。另一个例子是债券的价格可以存储为小数(尽管有些债券仍以分数形式交易,我相信),但衍生数量(如收益率到成熟度)也是一个浮点数。