标题:数字写入sql server数据库为什么会发生改变?
只看楼主
fengmumei
Rank: 2
等 级:论坛游民
威 望:2
帖 子:298
专家分:14
注 册:2006-9-16
结帖率:100%
 问题点数:0 回复次数:4 
数字写入sql server数据库为什么会发生改变?

我用asp+sql server数据库时发现将数据保存到数据库时发生变化,其中数据库表中字段的类型是:float,有默认值为0。
以期望将20.1写入数据库表中为例,我曾分别用insert into方式 和rs.addnew方式将其保存到数据库中,但从sql查询分析器或sql企业管理器中看到的数据就不是20.1 而是20.09999999999999,有时是20.10000000000001,从数据库输出显示时如果用formatnumber函数可以正确的显示,但是如果涉及数据的比较时就会有问题了:20.1>20.09999999999999,20.1<20.10000000000001,这样就会出现错误提示。
想过保存时先用formatnumber或round函数处理,可是也没有实现。而且保存数据是不是每次都会出现,但出现的几率很大,已严重影响整个软件系统的正常运行。
请教各位,这个问题该如何解决?

搜索更多相关主题的帖子: 数据库 sql server 企业管理 数字 
2007-11-07 09:32
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
得分:0 
浮点数都会存在这种误差的,因为计算机的精度是有限的

你是想要比较两个浮点数是否相等吗?

可以计算两个数的差值,如果小于一定的值(一般是1e-6),就认为两个数相等

而如果你想做高精度的话,那只能用字符串来保存了

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-07 11:01
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
float是近似值..
可以试试用decimal类型或numeric

我的msn: myfend@
2007-11-07 11:20
fengmumei
Rank: 2
等 级:论坛游民
威 望:2
帖 子:298
专家分:14
注 册:2006-9-16
得分:0 
好的,我会考虑的,谢谢各位了

随缘不变,不变随缘
2007-11-10 08:17
fengmumei
Rank: 2
等 级:论坛游民
威 望:2
帖 子:298
专家分:14
注 册:2006-9-16
得分:0 

用numeric和decimal类型试过了,没有成功,在数据库中可以实现算术运算,但输出后再做运算就不行了。
例如用sum()函数何以得到正确结果,但如果从数据库输出后在加减就不行了,说是“Microsoft VBScript 运行时错误 错误 '800a000d' 类型不匹配”,难道说输出后的就不是数字类型的了吗?成为字符型的了?


随缘不变,不变随缘
2007-11-10 09:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-184126-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.793089 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved