读书人

急求!解决思路

发布时间: 2012-03-15 11:50:38 作者: rapoo

急求!!!
表A定义了4个字段,总数、数量1、数量2、数量3、百分比,前面都是NUMBER型,百分比是VARCHAR2型,在DELPHI7里总数是这样求的:OraQuery.FieldByName('总数').AsInteger := OraQuery.FieldByName('数量1').AsInteger + OraQuery.FieldByName('数量2').AsInteger + OraQuery.FieldByName('数量3').AsInteger,现在要求百分比:

OraQuery.FieldByName('百分比').AsString := floattoStr(((OraQuery.FieldByName('数量3').AsInteger) / (OraQuery.FieldByName('总数').AsInteger))*100) +'%';可是这样出来只有2种结果:总数=数量3时是100%,数量3是0时为0%,可当数量3(值不为0)、数量2、数量1都有值时百分比算出来也为0%,要怎么处理啊,能算出正确值,百分数后还保留2位,是不是百分比的字段类型设置不对什么的,新手求教啊???


[解决办法]
不要直接把运算结果保存在floattoStr里,这里有个系统的默认转换问题,先把结果保存在double类型变量里,然后再转换看看
[解决办法]
OraQuery.FieldByName('百分比').AsString := floattoStr(((OraQuery.FieldByName('数量3').AsFloat) / (OraQuery.FieldByName('总数').AsFloat))*100.0) +'%';
[解决办法]

探讨
谢谢LS几位,有没有详细点的,新手不是很懂啊,悲剧的

[解决办法]
你只有一个字段放百分比,到底是要求那个数量占总数的百分比?

大家都说D的,我来提供一个用SQL语法求"数量1"的百分比

SQL code
select case when 数量1+数量2+数量3=0 then '0.00%'else ltrim(str(数量1*100/(数量1+数量2+数量3),10,2))+'%' end as 数量1百分比from t 

读书人网 >.NET

热点推荐