我在SQL Server中有一个数据类型为FLOAT(53)
的字段。在Informatica中导入后,它将变为FLOAT(15)
。
我应该使用什么数据类型来获得尽可能高的准确性?
好的,这里有很多问题。
- 查看此文档以了解Informatica中可用的数据类型
- 如果你想要";最大可能精度";您应该使用DECIMAL:(FLOAT(甚至Double(-不是精确的数据类型。它允许大的数字,允许分数——但它并不精确。事实上,不可能表示0.1!:(
- 如果使用DECIMAL,那么只要不超过15位,就可以得到精确的数字。对于较大的数字,你无论如何都会得到DOUBLE,除非
- 您可以在会话属性中启用
HIGH PRECISION
。然后,您将继续使用精确的十进制数字,最高可达38位 - 如果你超过38位数字,你最终会得到不精确的DOUBLE。是的,即使启用了
HIGH PRECISION
,也要检查此文档
在您的情况下,我认为您应该使用DOUBLE
——无论如何,SQL Server中的FLOAT
不是一个精确的类型。
这也是对这个问题的一个很好的总结。