算百分比都出错!

[复制链接]
查看11 | 回复4 | 2006-9-7 17:09:52 | 显示全部楼层 |阅读模式
我从数据库中读出两个 decimal 类型的字段中的数据,比如c1,c2;
其中 c1 = 30,c2 = 80, 现在我想算c1 占 c2 的百分比,既(c1/c2) * 100 是多少。
我是这样用sql写的:
select c1, c2 ,(c1/c2)*100
from t_name
where ............
可是得出的结果是:
30 , 80 ,0
我改成这样:
select c1, c2 , (float(c1)/float(c2))*100
from t_name
where.............
结果是:
30,80 , 3.7500000000000
但正确结果应该是 37.5 啊 ~~
这是怎么会事

? 晕死我了!
回复

使用道具 举报

千问 | 2006-9-7 17:09:52 | 显示全部楼层
问一下,知道科学计数法么,你就是*1000都是3.75,但是后面的不同,比如E+003
D:\work\test\db2sp>db2 " select(float(c1)/float(c2))*100 from t091 "
1
------------------------
+3.75000000000000E+001
1 条记录已选择。

D:\work\test\db2sp>db2 " select(float(c1)/float(c2))*1000 from t091 "
1
------------------------
+3.75000000000000E+002
回复

使用道具 举报

千问 | 2006-9-7 17:09:52 | 显示全部楼层
啊,我的天,我没用db2自带的命令编辑器,用的是其他查询软件,
不知道怎么会事,怎么算都不对。
这条语句在命令编辑器里执行,结果就对了。我太粗心了~ 应该自己多试试的~

谢谢 ryan76
回复

使用道具 举报

千问 | 2006-9-7 17:09:52 | 显示全部楼层
可能是其它软件对于Float类型数据的显示有不同之处吧,不过想不出有啥不同?
回复

使用道具 举报

千问 | 2006-9-7 17:09:52 | 显示全部楼层
这个真的不太清楚,我说的这个软件叫什么通用数据库查询(名字:UDAT),不光可以连接db2,也可以连接sql server等等,反正是配置好数据源就行。
在这个软件里就不能用db2的describe table 这样的语句。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行