Delphi中DBGrid汇总小数点位数控制?

chenyansong 2005-11-07 10:06:41
现在用DBGrid,他有一个属性footer,是求和的。小数位控制是在DisplayFormat中的,但是现在把小数位写成8位,明细中是8位,汇总后小数位是8位,但是后4位总是0,就是自动截断了后面四位。试了一下,还是不知道怎么控制?哪位有高招?
...全文
455 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyansong 2005-11-09
  • 打赏
  • 举报
回复
怎么没有高人现身,都潜水了么》?
lovendII 2005-11-08
  • 打赏
  • 举报
回复
可能你在数据库中子段只设置精度到4位,你检查看看
chenyansong 2005-11-08
  • 打赏
  • 举报
回复
DisplayFormat,round我都用过了,我这个是控制Dbgrid最后一行自动求和的小数位的,我发现最多有4位,如果是8位的话,最后就是3。22220000,系统自动把后面的截断了。就是这个意思,不知道大家明白没有?
darkliu 2005-11-08
  • 打赏
  • 举报
回复
(ADOQuery1.fieldbyname('系数') as Tfloatfield).DisplayFormat:='#,##0.#######0';
lovendII 2005-11-08
  • 打赏
  • 举报
回复
换种方法求汇总,
用sql语句好了,我都是这样做的,至于你那种方法,我没用过

select 科目﹐成绩 from table1 where ...
union
select ''合计'' as 科目 ,round(sum(成绩),8) as 成绩 from table1 where ...

用round函数来保留8小数
chenyansong 2005-11-08
  • 打赏
  • 举报
回复
是不是大家都不会啊,牛人是不是都休假了了啊 ,
chenyansong 2005-11-08
  • 打赏
  • 举报
回复
基类中的代码我已经贴出来了,见2楼!
chenyansong 2005-11-07
  • 打赏
  • 举报
回复
ftFloat, ftCurrency:
if Footer.DisplayFormat <> '' then
Result := FormatFloat(Footer.DisplayFormat, v)
else
with Field as TFloatField do
begin
FmtStr := DisplayFormat;
if FmtStr = '' then
begin
if Currency then
begin
Format := ffCurrency;
Digits := CurrencyDecimals;
end
else begin
Format := ffGeneral;
Digits := 0;
end;
Result := FloatToStrF(v, Format, Precision, Digits);
end else
Result := FormatFloat(FmtStr, v);
end;
end;
end;
chenyansong 2005-11-07
  • 打赏
  • 举报
回复
哪位可以试试,我在代码中控制,但是好像不起作用。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧