数据库 
首页 > 数据库 > 浏览文章

浅谈sqlserver下float的不确定性

(编辑:jimmy 日期: 2024/9/19 浏览:3 次 )

很多时候,大家都知道,浮点型这个东西,本身存储就是一个不确定的数值,你永远无法知道,它是 0 = 0.00000000000000123 还是 0 = 0.00000000000999这样的东西。也许一开始使用的时候没有问题,但是有时候做统计的时候,就会看出端倪

简单的举个例子,就知道统计的时候,有可能出现意外的效果,导致可能需要存储过程或者接收程序的代码左额外的取舍数位的处理,所以在此其实我是推荐使用Numeric来替代float进行一个替代使用,避免一个sum ,然后明明明细看每一条数据都是正常的2,3位小数,一汇总就变成了8,9位的样子

CREATE TABLE #T (ID INT IDENTITY,Va FLOAT)
CREATE TABLE #T1 (ID INT IDENTITY,Va NUMERIC(15,9))
--分开执行-------------------------------------------------
INSERT INTO #T
    ( Va )
VALUES ( 0.60000000)
INSERT INTO #T1
    ( Va )
VALUES ( 0.60000000)
GO 100

SELECT SUM(Va) FROM #T
SELECT SUM(Va) FROM #T1

----------------------
60.0000000000001
(1 行受影响)

---------------------------------------
60.000000000
(1 行受影响)

总结

以上就是本文关于浅谈sqlserver下float的不确定性的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅本站:简述Redis和MySQL的区别、ORACLE SQL语句优化技术要点解析、MYSQL子查询和嵌套查询优化实例解析等,有什么问题可以随时留言,小编会及时回复大家。感谢各位对的支持!

上一篇:SqlServer 按时间段查询问题
下一篇:SQL update 多表关联更新的实现代码
一句话新闻
高通与谷歌联手!首款骁龙PC优化Chrome浏览器发布
高通和谷歌日前宣布,推出首次面向搭载骁龙的Windows PC的优化版Chrome浏览器。
在对骁龙X Elite参考设计的初步测试中,全新的Chrome浏览器在Speedometer 2.1基准测试中实现了显著的性能提升。
预计在2024年年中之前,搭载骁龙X Elite计算平台的PC将面世。该浏览器的提前问世,有助于骁龙PC问世就获得满血表现。
谷歌高级副总裁Hiroshi Lockheimer表示,此次与高通的合作将有助于确保Chrome用户在当前ARM兼容的PC上获得最佳的浏览体验。