在某些情况下,在类型转换后应用舍入时,SQL Server返回错误的结果

时间:2015-09-13 14:46:29

标签: sql-server

案例1:

SELECT ROUND(CONVERT(FLOAT, '0.030') * CONVERT(FLOAT, '0.045'), 4)

以上查询的结果为0.013,这是错误的。

应该提供0.014而不是0.013

案例2:

为了克服上述情况,我尝试了以下查询:

SELECT ROUND(CONVERT(DECIMAL(37, 4), '0.030') * CONVERT(DECIMAL(37, 4), '0.045'), 4)

然后结果是0.014,这是正确的。

但它的价值低于以下值:

SELECT ROUND(CONVERT(DECIMAL(37, 4), '0.011') * CONVERT(DECIMAL(37, 4), '0.045'), 4)

结果是0.0001这是错误的。

它应该返回0.0000

有谁能告诉我为什么所有这些情况都在发生?

我应该使用什么来克服上述情况?

0 个答案:

没有答案