关于统计问题(50分)

  • 主题发起人 主题发起人 心心
  • 开始时间 开始时间

心心

Unregistered / Unconfirmed
GUEST, unregistred user!
with DM.Data_Query1 do
begin
SQL.Clear;
SQL.Add('select 单位名称,Count(单位名称),Sum(x26) from ' + ComboBox1.Text + ' group by 单位名称');
Active := True;
end;
其中的一个统计结果为738160.510000002
怎么回事,查看数据源,没有什么.510000002的数据??
 
数据精度的问题,例如1.00表示为0.9999999等,你取整看看
 
呵呵,精度问题我知道,只是+法不应该会出现,总以为只有除法时才会出现,哈,看来我又错了,
解决
with DM.Data_Query1 do
begin
SQL.Clear;
SQL.Add('select 单位名称,Count(单位名称),rOUND(Sum(x26)*100)/100 from ' + ComboBox1.Text + ' group by 单位名称');
Active := True;
end;
 
数据精度的问题,取整绝对没有用处!!
是用的bde引擎 将Enabled BCD 修改一下
还有办法自己写一个函数
 
我用的是ADO连接ACCESS数据库,
 
TADODataSet也有Enabled BCD 属性
你的ado 是用什么连接
用这TADOConnection->TADODataSet正确
 
Connected := False;
ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=admin;Data Source=';
if FileExists(S) then
ConnectionString := ConnectionString + s + ';'
else
begin
Application.Terminate;
Abort;
end;
ConnectionString := ConnectionString + 'Mode=Share Deny None;Extended Properties="";Locale Identifier=1028;Jet OLEDB:System database="";';
ConnectionString := ConnectionString + 'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;';
ConnectionString := ConnectionString + 'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;';
ConnectionString := ConnectionString + 'Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;';
Connected := True;


帮看看,应修改哪里??
 
我不是说你的TADOConnection,
你的Data_Query1 是TADODataSet 、TAdoquery、TQuery
最好用TADODataSet,
TADODataSet.EnabledBCD
 
心心你还在不在,我要吃饭了
 
你想你肯定是用了单精度字段,改成双精度字段就可以了
 
我用的是双精度型,小数点位数 自动
 
后退
顶部