float、real 近似值对整体结果的影响

作者:vkvi 来源:ITPOW(原创) 日期:2008-8-7

在 SQL Server 中,float、real 同样不表示精确值,只表示近似值,近似值对结果是有一定影响的。

比如我们插入一千条值为 0.00001 的记录,然后再 SUM 这些值。如果字段类型为 float,那么我们可以看到结果有一定误差;如果字段类型是 real,那么误差更大,甚至可以说是错误的结果。

这看起来是挺恐怖的事,但实际上,在实际运营中影响并不明显,为什么呢?因为实际运营中,不大可能所有的数字都一样,由于是近似值,有的比实际数字大一点点,有的比实际数值小一点点,就中和了。比如,0.1+0.2+0.3+...+1.0,不论是 float 还是 real,这个结果都是 5.5,是符合的。也就是说有的存储值比实际数值偏小一点,有的存储值比实际数值偏大一点,所以 SUM(存储值) 与 SUM(实际数值) 还是挺接近的。

如果我们要精确存储,比如财务上,就不建议用这两个数据类型。

相关阅读

相关文章