MSSQL中FLOAT数据使用ROUND时出现的奇怪问题


RT,已知MSSQL2005数据库中有如下数据
no num
1 1.99899291992188
2 3.99899291992188
(no类行为一般的整数型,num是float)
当我执行以下语句的时候
Select num from cityclass where num=1.99899291992188
Select num from cityclass where round(num,14)=1.99899291992188

第一条返回正常的结果,第二条返回无结果
觉得可能是精度什么的问题,但是不能理解,因为我执行如下语句后,显示的内容是一样的
Select round(num,14),num from cityclass where num=1.99899291992188

更让我无语的事情来了,我更改语句,变成
Select num from cityclass where round(num,14)+1=1.99899291992188+1
或者
Select num from cityclass where str(round(num,14),16,14)=str(1.99899291992188,16,14)
这两条都可以正常返回结果

于是我更加相信应该是数据转换精度出了问题

但是!!!!更加蛋疼的事情啊...

我执行如下语句
Select num from cityclass where round(num,14)=1.99899291992188
Select num from cityclass where round(num,14)=3.99899291992188

第一条照旧无结果,第二条却正常返回

真心无奈了,求高人解救

mssql 数据库

lewlss 11 years, 3 months ago

Your Answer