【发布时间】:2009-12-02 09:48:28
【问题描述】:
在这个SO question 中,OP 想要将 0 放在小数位上以获得他的结果。现在我给出的(下面)示例是用 DECIMAL 进行 CAST,然后用 FLOAT 进行 CAST。
例如
SELECT CAST(0.55 AS FLOAT)
使用上面的示例并在 SQL Server 2005/2008 中运行它似乎会得到正确的结果 0.55。但正如 Peter 在另一篇文章中指出的那样,在 SQL Server 2000 中运行它会产生 0.55000000000000004。
所以我的问题是:
在 SQL 中进行数据转换时是否要不惜一切代价避免使用 FLOAT?
为什么
cast(0.55 as float)在SQL2k 中产生0.55000000000000004而在以后的版本中产生0.55?Microsoft 是否使在更高版本的 SQL Server 中使用 FLOAT 更加可靠?
感谢您的宝贵时间。
【问题讨论】:
-
抱歉 kevchadders,但您有什么问题?
-
对不起鲁本斯的困惑,我希望我已经说得更清楚了。
-
为了清楚起见,示例应该只是:select cast(0.55 as float),因为小数部分只与其他问题有关
-
好点,我也编辑了我的示例。
标签: sql sql-server floating-point floating-accuracy