从Float到Decimal的转换不正确

时间:2015-06-15 13:05:58

标签: sql-server sql-server-2008

我的查询相对简单,但想知道根本原因

将Float转换为Decimal的SQL查询会产生不正确的结果。

示例:

Select CAST(CONVERT(DECIMAL(25,8), CONVERT(FLOAT,338193293.16))AS VARCHAR(255))

预期结果:338193293.16000000

实际结果:338193293.16000003

额外的3来自哪里?

1 个答案:

答案 0 :(得分:1)

位数过多 - 无论小数点后它们只有2位。使用较短的数字,例如38193293.16或使用FLOAT(24)。对于普通FLOAT,有“精确= 7位”。