Sql server SSIS带额外小数的浮点数据

Sql server SSIS带额外小数的浮点数据,sql-server,csv,ssis,etl,Sql Server,Csv,Ssis,Etl,Visual Studio 2015;资料来源:OLEDB(SQL2012);目标:平面文件(csv) 我有一些需要从中提取数据的存储过程,我无法控制这些存储过程,它们有浮点数据类型的输出。在SSMS中,数据看起来有点像3.45985,但在SSIS中,输出csv文件的数据有点像3.459899999(数字是虚构的,但你知道重点) 我确实理解float是如何工作的,并且理解float不是一种精确的数据类型——但我不能控制存储过程。我所挣扎的是如何克服它。我已经读到,您可以在平面文件目标中将输出设置

Visual Studio 2015;资料来源:OLEDB(SQL2012);目标:平面文件(csv)

我有一些需要从中提取数据的存储过程,我无法控制这些存储过程,它们有浮点数据类型的输出。在SSMS中,数据看起来有点像3.45985,但在SSIS中,输出csv文件的数据有点像3.459899999(数字是虚构的,但你知道重点)

我确实理解float是如何工作的,并且理解float不是一种精确的数据类型——但我不能控制存储过程。我所挣扎的是如何克服它。我已经读到,您可以在平面文件目标中将输出设置为string,但它似乎不起作用。我还尝试从存储过程中获取输出,并将结果放入表变量中,并成功地实现了所需的格式设置。然而,一些存储过程已经在临时表中进行了一些插入,当我试图将结果存储到表变量中时,我得到了一个错误。所以,这个解决方案对我来说真的不起作用


我的业务用户已经习惯于在遗留应用程序中使用3.45985。我写这些都是为了通过SSIS实现提取的自动化,而不必支持传统的业务线应用程序

您可以使用派生列转换对数字进行四舍五入,并将其转换为十进制,表达式如下所示:

(DT_DECIMAL, 5) ROUND([ColumnName], 5)

您可以使用派生列转换对数字进行四舍五入,并将其转换为十进制,表达式如下:

(DT_DECIMAL, 5) ROUND([ColumnName], 5)

我不需要总是有x个小数。但当我这样做时:舍入([利率%],7),我的输出有更多的值,小数点右边有14位数字。而以前没有那么多,我不需要总是有x个小数。但当我这样做时:舍入([利率%],7),我的输出有更多的值,小数点右边有14位数字。而在这之前,它并没有那么多。