在SQLServer中保存Double.MinValue

时间:2009-10-16 16:18:52

标签: sql sql-server tsql double

对SQLServer数据库使用TSQL更新命令,如何以尽可能小的双值更新FLOAT类型的列?

十六进制表示法中可能的最小双精度值为3ff0 0000 0000 0001 (http://en.wikipedia.org/wiki/Double_precision

2 个答案:

答案 0 :(得分:1)

无论是什么,你需要这个,我建议你考虑不需要假设SQL Server的FLOAT类型的替代品。不幸的是,SQL Server在IEEE 854合规性方面相当不稳定。例如,请参阅these newsgroup threads。另请注意,SQL Server在这方面的行为has changed版本之间可能会在没有警告的情况下再次更改。在不给出所有血腥细节的情况下,您可以直接分配给FLOAT的最小值不一定是FLOAT可以包含的最小值(没有抱怨)。 SQL Server的一些诡计也围绕着IEEE称之为“非规范化”的浮点数,如果你想让“最小的”具有精确的含义,那么考虑这一点很重要。

很抱歉不回答你的问题,但我认为可以从答案中得到很多好处,这些答案可以帮助你进一步走上你所处的艰难道路。

答案 1 :(得分:0)

不要,使用十进制来避免丢失值。或二进制(8),如果你想以十六进制存储它,按照文章。

严重的是:根据CPU,风向和月相,当你设法转换它时,它很可能不会得到相同的值。

“最小”是什么意思? 3ff0 0000 0000 0001 = 1.0000000000000002

并且,它是否在客户端中是十六进制但你想在db中浮动?