Delphi5中DBGrid不能正确显示实型数据(100分)

  • 主题发起人 主题发起人 zhhero
  • 开始时间 开始时间
Z

zhhero

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi5 中 使用DBGrid 显示一Access97
数据库中内容,有近80个字段是实数,单精度型,
小数位数为自动,在Access97中显示正常,但在
Delphi设计和运行中均不能正确显示,如
1.1 变成1.10000002384186;
1.01 变成1.00999999046326;
1.001变成1.00100004673004;
4.138变成4.13800001144409;
4.78 变成4.78000020980835;
但也有例外
1.25,1.125,1.5,1.75,1.875,1.0625
等均正确显示.
怀疑是读数据库中数据时有误,但改用FoxPro
数据库后问题依旧;又试着将一固定数据写入数
据库对应字段,但问题仍出现,使用跟踪调试指
令,察看该字段内容时发现该字段数据正确,顾
百思不得其解,盼高手为小弟指点迷津.谢了!!
 
设置一下displayformat
如:
displayformat:='0.00';
表示保留二位小数
 
在Query或Table 中的SetText事件中自已设置小数位的长度
如 strtofloat(FloatToStrF(Query1.fieldbyname('nu_Money').asfloat,ffFixed,15,2))等等

用DisplayFormat 只是一个显示,实际上值仍是浮点数。

 
用货币型字段就行
 
我试过了:
1.没找到设置displayformat的位置,help中也没有displayformat的说明.
能再说详细些吗?(真够笨吧......嘻嘻)
2.设置小数位的长度并不能改变显示的数值,我甚至用固定值(如1.001)赋给
某实数字段,但也不成功,好像也不行,由其他方法吗?
3.用货币型字段也不行,在Access97中显示不美观(有个货币符号),同时DBGrid
中显示仍不正确.
我想可能是DBGrid显示的问题,明明赋给1.001 显示就为1.00100004673004,
真是气死人,请高手发表高见.
 
1、右击鼠标Table OR Query,选择所有字段,
2、选中一个字段,它的属性栏中有displayformat
 
感谢Wind2000,确实如此,显示正常了.请问大家,为什么会出现这个问题呢?
 
这是浮点数在机器中存储的正常情况,很正常的,与DBGRID无关。
 
浮点数很烦的。看着都烦。
 
本人在sqlserver7数据库中也遇到以上情况;字段为float,后改为number,并定义了小数为数就正常了。
 
在access97中也同样可以定义小数位的(不要用自动),
但用displayformat是最常用的办法,省去了很多麻烦
 
多人接受答案了。
 
后退
顶部