请教大侠:ado+access,数据库里面单精度类型,我设置了小数位数为两位。可是读到dbgrid里面后,小数有一长串!请问如何去掉?

wwxc18 2006-08-09 08:59:38
在ACCESS数据库里面显示的也是两位,怎么会出现这种情况呢?怎么处理把小数位处理为两位呢,
...全文
551 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
proer9988 2006-10-05
  • 打赏
  • 举报
回复
ACCESS中用货币类型表达与钱相关的类型.
max8max 2006-10-04
  • 打赏
  • 举报
回复
学到野了
支持中文哦 2006-10-01
  • 打赏
  • 举报
回复
ado技术float传输是这样的,有个精度误差,比如:你实际上是0.3,保存的可能是0.2999999999,也可能是0.3000000000001,就这样。这就是浮点数的不方便,进行大额计算的时候,误差就会被放大,不过,这个要看你的项目是否能容忍这个误差。
比较好的办法就是用定点数格式的小数,这样没有误差,速度也非常快。
nevergetwin 2006-09-30
  • 打赏
  • 举报
回复
星星农场的办法好
xc2927 2006-09-30
  • 打赏
  • 举报
回复
学习
sdzbbz 2006-09-30
  • 打赏
  • 举报
回复
学习
zihan924 2006-09-30
  • 打赏
  • 举报
回复
同意 星星农场 的观点,要规范数据,首先要从根本点出发,设置好数据库,写程序也事半功倍。
Park_xin 2006-09-28
  • 打赏
  • 举报
回复
procedure TForm.DBGridDrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
temp:string;
begin
with DBGrid.Canvas do
begin
FillRect(Rect);
if (Field.DataType = ftFloat) then
begin
if not (Field.IsNull) then temp:= format('%8.1f',[strtofloat(field.asstring)]);
TextOut(Rect.Right-TextWidth(temp)-3,Rect.Top+3, temp);
end
else TextOut(Rect.Left+2,Rect.Top+3,Field.AsString);
end;
end;
flyinggoal 2006-09-28
  • 打赏
  • 举报
回复
耶,很同意上面各位的观点SmallMaker(小人物) Hank(星星农场) ( ) darkliu(钢铁工人甲) wudi_1982(︻┳═一酒可千日不饮,但不可一饮不醉)( )
Hank 2006-08-10
  • 打赏
  • 举报
回复
以上的方法是治标的,应该这么干

1、把数据类型修改为双精度型
2、设置小数位数
3、取消默认值

这样才能保存真实的录入数据

剩下的采用DisplayFormat:='0.00'的方式,这样只是规范显示,用0补齐显示
sunxianyu 2006-08-10
  • 打赏
  • 举报
回复
我也来晚了。不过不会,呵,学知识了,MARK下
SmallMaker 2006-08-09
  • 打赏
  • 举报
回复
设置字段的displayFormat属性####.##
gulf1234 2006-08-09
  • 打赏
  • 举报
回复
来晚了,楼上几位正解
darkliu 2006-08-09
  • 打赏
  • 举报
回复
(ADOQuery1.fieldbyname('系数') as Tfloatfield).DisplayFormat:='###,###,##0.##0';
wudi_1982 2006-08-09
  • 打赏
  • 举报
回复
双击ado组件,添加静态字段,然后设置字段的displayFormat

2,497

社区成员

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

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