简单的问题,不可解释的结果??(三个相同的sql,不通的结果) (100分)

  • 主题发起人 主题发起人 david_lsh
  • 开始时间 开始时间
D

david_lsh

Unregistered / Unconfirmed
GUEST, unregistred user!
1. 建表
CREATE TABLE [dbo].[XXX] (
[c] [varchar] (2) NOT NULL ,
[a] [numeric](14, 4) NULL ,
[numeric](14, 4) NULL )
2.表的数据 c a b
1 123 234

3.执行sql: select ((b-a)/b)*100 as ee from XXX
的结果:47.4358974358974358900
执行sql: select tt.ee from
( select ((b-a)/b)*100 as ee from XXX ) tt
结果:4.7435897435897435890
执行sql:
select * from
( select tt.ee from
( select ((b-a)/b)*100 as ee from XXX ) tt
) kk
的结果: .4743589743589743589

各位大侠试一试:谁能解释???????
 
sqlserver2000测试结果为
同为47.4358974358974358900
不知楼主用的什么数据库
 
忘了告诉各位,我用的是 sqlserver 7.0
谢谢!!
 
我想这与我以前我遇到过的问题有相同之处。有两个双精型数据,比方说double a,b;
给这两个变量赋值,a=0.0,b=0.0,但是a-b的结果却不是0,而是一个无穷小的数,
这和双精型数据的精度有关,浮点数的精度有两种表示方法,其中一种是动态表示的,
这就导致了上面的情况,有关这方面的知识可找<计组>看看,这个可能也和那个差不多
 

[a] [numeric](14, 4) NULL ,
[numeric](14, 4) NULL )

就可以肯定是精度问题,换成整数试一试
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部