表:

create table float_dt_test
(
    cola float,
    colb float
);

插入:
insert into float_dt_test values(57,999.857894736842);
insert into float_dt_test values(0.225,999.99);

我想使用SSIS将给定的数据导出到.txt文件中。

我想将值导出为6。

txt文件中的预期输出:
Cola                    Colb
-------------------------------------------
57                      999.857895
0.225                   999.99

为此,我写了以下查询:
SELECT ROUND(Cola,6) as cola,
       ROUND(Colb,6) as colb
FROM float_dt_test;

但是获取导出文件后,看起来像:
Cola                    Colb
-------------------------------------------
57                      999.85789499999998
0.22500000000000001     999.99000000000001

最佳答案

四舍五入值不会更改内部表示。

四舍五入后,转换为小数:

SELECT CONVERT(DECIMAL(10, 6), ROUND(Cola, 6)) as cola,
       CONVERT(DECIMAL(10, 6), ROUND(Colb, 6)) as colb
FROM float_dt_test;

实际上,ROUND()现在是多余的。保留它不会造成任何危害,因为这会使操作变得明确。

10-08 19:31