遇到了上天赐予的古怪问题~~~~

gallipot 2003-10-01 07:12:11
使用Access数据库,数据类型为单精度,假设数据为2.4,在Delphi的数据库控件比如DBGrid、DBText之类的控件中显示为2.400000049816之类的数字,怎么办?为什么?谢谢~
...全文
17 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
superlionet 2003-10-03
  • 打赏
  • 举报
回复
在DBTEXT所连接的TABLE 或者QUERY中。将该字段的DISPLAYFORMAT改成#0.00之类的看看。
delphi1234567 2003-10-03
  • 打赏
  • 举报
回复
单精度型,双精度型都是有误差的数据类型,

改用小数就不会有此问题了。
aiirii 2003-10-03
  • 打赏
  • 举报
回复
一般在 table 或 dbgrid 中對應的 field 都有個 formatstr 之類的東西,可設定格式方式!!!
gallipot 2003-10-03
  • 打赏
  • 举报
回复
DISPLAYFORMAT字段只有TAggregateField,TDateTimeField,TNumericField,TSQLTimeStampField几个有啊,类似于DBTEXT之类的没有这个属性啊??其实我只是在Access数据库中设置了一个单精度的字段,直接使用DB控件进行显示,如果数据为2.5就直接显示为2.5,如果是2.1的话就会显示为2.0999999之类的。如果每一个都需要用sql进行格式化的话那也太麻烦了吧!
wzds2000 2003-10-03
  • 打赏
  • 举报
回复
Access数据库的问题,强行用sql转一下就好了。
ghostmaster 2003-10-02
  • 打赏
  • 举报
回复
9494
cnhgj 2003-10-02
  • 打赏
  • 举报
回复
在查询时用Format函数格式化,不过数据量大的话速度会变慢
47522341 2003-10-02
  • 打赏
  • 举报
回复
在数据库中设置其数据类型的时候不是可以同时设置其小数位数吗?^_^
yayx 2003-10-02
  • 打赏
  • 举报
回复
用round函数就行了

好像是
var f:single

f:=2;
IntData=round(f,2);
gallipot 2003-10-01
  • 打赏
  • 举报
回复
怎么样可以对AdoQuery中的字段显示部分进行格式化??还有我select的是所有字段SELECT *,怎么样格式化??
FrameSniper 2003-10-01
  • 打赏
  • 举报
回复
8知道,偶讨厌数据库,真麻烦,学习
shuixin13 2003-10-01
  • 打赏
  • 举报
回复
单精度不是一个很精确的数据类型,
sixgj 2003-10-01
  • 打赏
  • 举报
回复
楼上的办法都多!
zleeway 2003-10-01
  • 打赏
  • 举报
回复
这是浮点数显示时的误差.

select format(numfield, '0.00') as numfield
from table1
sailer_shi 2003-10-01
  • 打赏
  • 举报
回复
办法很多,给你说两个:一是修改数据库中的数据类型,二是将连接DBGrid的数据源例如AdoQuery中的字段显示部分进行格式化
shaken 2003-10-01
  • 打赏
  • 举报
回复
改为其他数据类型显示,如:money等

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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